如何让MSBUILD为VS2013使用特定的PublishProfile?

时间:2015-09-17 17:53:31

标签: visual-studio-2013

这个问题已经被提出了很多问题,并且在几个版本的Visual Studio中使问题复杂化。到目前为止我所做的是:

  1. 在Visual Studio 2013中创建新的Web应用程序
  2. 创建了3个“发布”个人资料。 Web 发布到我的本地IIS, DEBUG RELEASE 都对c:\ temp \ debug和c:\ temp执行“文件复制”分别发布
  3. 所有三个配置文件都在IDE中运行。当我尝试使用 MSBUILD 并使用 / p:PublishProfile 选项时出现问题。我已经尝试了几十个选项,但它们似乎都没有调用我指定的配置文件。我认为它应该像调用一样简单:

    msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=RELEASE
    

    然而,抱怨没有设置配置和CPU类型(即使在配置文件中指定)。如果我继续将它们添加到命令行,我通常会得到:

      

    未为项目

    设置OutputPath属性

    我尝试过使用 /p:VisualStudioVersion=12.0 / p:Configuration = XXX (即使在个人资料中设置了这个)

1 个答案:

答案 0 :(得分:1)

使用以下给定的命令:

msbuild" path \ to \ projectFlie \ xyz.csproj" / t:发布/ p:configuration = Release-Prod / p:PublishDir =" C:\ temp"

如果它抱怨项目的OutputPath属性,请执行以下操作:

  1. 转到投掷错误的项目的 .csproj 文件。
  2. 查找特定配置的属性组。属性组应如下所示:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-Prod|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release-Prod\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    </PropertyGroup>
    
  3. 确保 OutputPath (Release-Prod)中的名称与配置名称完全匹配。

    如果您没有找到配置的属性组,请添加一个。

    这可以解决您的问题。