13

在 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。

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

4

3 回答 3

6

这只是一种解决方法。

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

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

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

于 2010-04-22T22:00:07.010 回答
0

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

于 2010-04-18T18:44:40.817 回答
0

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

  • 如果较新,请将复制到输出文件属性设置为复制
  • 将 Build Action 文件属性设置为 Content(如果需要编译文件,则设置为 Compile)
于 2013-10-16T15:30:32.610 回答