MSBuild目标_CopyWebApplication无法将所有必要文件复制到bin文件夹中。

15 浏览
0 Comments

MSBuild目标_CopyWebApplication无法将所有必要文件复制到bin文件夹中。

在网络的其他地方,你可以找到关于如何使用类似这样的东西来模拟VS 2005-2008 IDE中的发布功能的建议(希望我没有搞砸语法!):

msbuild /t:ResolveReferences;_CopyWebApplication /p:BuildingProject=true;OutDir=C:\inetpub\wwwroot\ blah.csproj

现在,看起来.dll文件复制得很好。然而,有一些配置文件和模板文件需要复制到bin文件夹中,以使应用程序正常工作。例如,一个NHibernate配置文件在blah.csproj中显示为:


  PreserveNewest

在IDE中使用发布功能会按照应该的方式复制这个文件,但前面提到的_CopyWebApplication目标却不会。我需要在构建脚本中复制这个文件。这是_CopyWebApplication的期望行为吗?有什么建议可以解决这个问题吗?

编辑于4/21/2010:

让我澄清一下,我们目前局限于VS 2005和VS 2008项目,并且我们的构建脚本是为MSBuild 3.x编写的。我们还没有准备好转移到VS 2010。

让我也说明一下,我们正在寻找一个可以从命令行中使用的解决方案,以便我们可以自动化类似发布的命令,以及自定义构建选项,并可能在将来自动化部署。

0
0 Comments

在VS 2012中,我遇到了与(MSBuild target _CopyWebApplication does not copy all necessary files to the bin folder)相同的问题,并最终通过以下操作解决了这个问题:

  • 将需要被复制的文件的"复制到输出目录"属性设置为"如果较新则复制"
  • 将文件的"生成操作"属性设置为"内容"(或者如果文件需要编译,则设置为"编译")
0
0 Comments

在使用MSBuild目标_CopyWebApplication时,无法将所有必要的文件复制到bin文件夹中。这个问题的出现可能是因为使用了VS 2005 - 2008项目,而不是VS 2010或.NET 4。解决方法可能是使用MSDeploy进行部署。详情请参考MSDeploy官方文档

0
0 Comments

问题原因:在发布Web站点时,MSBuild目标_CopyWebApplication没有将所有必要的文件复制到bin文件夹中。

解决方法:在发布Web站点的构建脚本中,运行MSBuild来发布Web项目本身后(Targets="ResolveReferences;_CopyWebApplication"),添加一个复制操作:

<Copy SourceFiles="@(ProjectBinFiles)" DestinationFolder="$(StageBin)\%(ProjectBinFiles.RecursiveDir)" />

其中,ProjectBinFiles是表示源目录中bin目录中的文件的项,StageBin是表示发布站点目录中的bin文件夹的属性。到目前为止,它似乎起作用。

我已经在多个项目上尝试过,效果良好。:)

在我的任务中,我必须定义"ProjectBinFiles"、"StageBin"变量吗?我需要尝试一下,但不确定在哪里实现这个。

是的,在复制命令之前必须定义这些变量。或者,您可以硬编码这些值为您想要的任何值。

VS2010或VS2012中是否有任何修复方法?

请看我的答案,这可能是在VS2012中的一个修复方法。

0