msbuild deployonbuild尝试发布不同的项目

时间:2015-08-20 13:22:31

标签: asp.net-mvc msbuild publish

我有一个MVC网站,我使用参数

通过命令行发布
msbuild.exe /p:DeployOnBuild=true /p:PublishProfile=Test MyProject.csproj

MyProject项目引用了另一个Web应用程序项目MyReferencedProject。这用于将共享Razor视图和其他共享代码存储到另一个网站。 (RazorGenerator推荐将项目类型设置为Web应用程序,以便在使用Razor视图时获得智能感知)此项目的功能类似于类库,不应发布。

问题在于,当我运行上面的命令时,我收到的错误是它无法找到Test.pubxml的{​​{1}}:

  

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web \ Microsoft.Web.Publishing.targets(4352,5):error:PublishProfile的值设置为'测试',期望在&C; \ Projects \ MyReferencedProject \ Properties \ PublishProfiles \ Test.pubxml'中找到文件。但它无法找到。

如何在没有尝试发布MyReferencedProject的情况下运行msbuild发布MyProject

我发现我可以通过为此项目添加MyReferencedProject发布配置文件来解决此问题,但这意味着我必须设置一些位置以便在代码发布时放置代码,这真的不应该和根本没有生成。

1 个答案:

答案 0 :(得分:1)

尝试将命令行更改为:

msbuild.exe /p:DeployMyProject=true /p:PublishProfile=Test MyProject.csproj

然后在任何MyProject.csproj语句之前将以下属性组添加到Import

<PropertyGroup>
  <DeployOnBuild Condition="'$(DeployMyProject)'!=''">$(DeployMyProject)</DeployOnBuild>
</PropertyGroup>

此解决方案基于:How to publish one web project from a solution