VS2012 MSBuild:使用现有发布配置文件发布Web应用程序项目

时间:2013-08-17 20:14:13

标签: visual-studio-2012 msbuild web-application-project

在Visual Studio 2012 Build菜单中,有一个Publish命令。在此,您可以在项目的Properties文件夹中创建保存为.pubxml文件的配置文件。我有一个这样的配置文件,这是一个简单的文件复制操作 - 它只是编译网站并将其转储到一个文件夹。

如何在命令行中使用msbuild将已编译的Web应用程序发布到文件夹?


我尝试了什么

我试过这个问题的例子:

After Publish event in Visual Studio

这里给出的变化和例子:

http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

后者似乎最接近,但它导致每个库项目.csproj我试图发布以抛出错误:

  

项目“MainProj.csproj”(1)正在节点1上构建“ReferencedProj.csproj”(2)(默认目标)。

     

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(609,5):错误:未为项目“ReferencedProj.csproj”设置OutputPath属性。请检查以确保您为此项目指定了Configuration和Platform的有效组合。 Configuration ='Staging'Platform ='AnyCPU'。您可能会看到此消息,因为您正在尝试构建没有解决方案文件的项目,并且已指定了此项目不存在的非默认配置或平台。 [ReferencedProj.csproj]

     

完成建筑项目“ReferencedProj.csproj”(默认目标) - 失败。

这种方法与本答案中的建议非常相似:

https://stackoverflow.com/a/7077178/176877

关键的区别可能是我在Visual Studio 2012中,而不是VS2008或2010。

1 个答案:

答案 0 :(得分:0)

老问题,但如果这有助于任何人,这个简单的,剥离的方法对我来说很好:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    ...
    <BuildDependsOn>
        $(BuildDependsOn);
        PublishOtherProject;
    </BuildDependsOn>
</PropertyGroup>
<Target Name="PublishOtherProject"> 
    <MSBuild Projects="pathtomyproject.csproj" Properties="DeployOnBuild=true;PublishProfile=nameOfPublishProfile" />
</Target>

关键是:

<MSBuild Projects="pathtomyproject.csproj" Properties="DeployOnBuild=true;PublishProfile=nameOfPublishProfile" />