【问题标题】:MSBuild target _CopyWebApplication does not copy all necessary files to the bin folderMSBuild 目标 _CopyWebApplication 不会将所有必要的文件复制到 bin 文件夹
【发布时间】:2010-04-07 16:05:36
【问题描述】:

在 Web 的其他地方,您可以找到有关使用类似的东西从命令行模拟 VS 2005-2008 IDE 中的发布功能的建议(我希望我没有弄错语法!):

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

现在,.dll 的副本看起来不错。但是,应用程序需要将某些配置文件和模板文件复制到 bin 文件夹中。例如,一个 NHibernate 配置文件在 blah.csproj 中显示为:

<None Include="blah.cfg.xml">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

虽然在 IDE 中使用 Publish 会按原样复制此文件,但上述 _CopyWebApplication 目标不会。我需要将此文件复制到构建脚本中。这是 _CopyWebApplication 所需的行为吗?有关如何解决此问题的任何建议?

2010 年 4 月 21 日编辑:

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

我还需要说明的是,我们正在寻找可从命令行中获得的解决方案,以便我们可以自动执行类似发布的命令以及自定义构建选项,并可能在未来自动执行部署。

【问题讨论】:

  • 奇怪,我遇到了同样的问题,在 _CopyWebApplication 之前添加 ResolveReferences 为我解决了这个问题。你确定你的所有引用都将 CopyLocal 设置为 True 吗?
  • @Allen - 我没有查看 CopyLocal。我会仔细阅读的。

标签: msbuild publish target


【解决方案1】:

这只是一种解决方法。

在发布网站的构建脚本中,在Web项目本身上运行MSBuild进行发布(Targets="ResolveReferences;_CopyWebApplication")后,我添加了复制操作:

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

其中 ProjectBinFiles 是表示源目录中 bin 目录中文件的 Item,StageBin 是表示已发布站点目录中 bin 文件夹的 Property。到目前为止,它似乎有效。

【讨论】:

  • 我已经在多个项目上尝试过这个,它似乎运行良好。 :)
  • 必须定义“ProjectBinFiles”、“StageBin”变量吗?我需要尝试一下,但不确定在我的任务中在哪里实现它?
  • 是的,这些必须在复制命令之前定义。或者,您可以对这些值进行硬编码。
  • VS2010 或 VS2012 中的任何修复?
  • @Kiquenet 查看我的答案以了解 vs2012 中的可能修复
【解决方案2】:

我也遇到了类似的问题。我认为答案是使用MSDeploy。现在正在调查它,但可能会提供所需的功能......

【讨论】:

  • 这适用于 VS 2005 - 2008 项目吗?我的团队还没有准备好将任何东西切换到 VS 2010 或 .NET 4,因为我们仍然有许多应用程序仍在 VS 2005 下。
【解决方案3】:

我在 VS 2012 中遇到了同样的问题,最终通过对需要复制的任何文件执行以下操作来修复它:

  • 将“复制到输出文件”属性设置为“如果较新则复制”
  • 将 Build Action 文件属性设置为 Content(如果需要编译文件,则设置为 Compile)

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多