如何让MSBUILD使用VS2013的特定PublishProfile



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

    在Visual Studio 2013中创建新的Web应用程序
  1. 创建3个"发布"配置文件。Web发布到我的本地IIS, DEBUGRELEASE分别做"文件复制"到c:temp DEBUG和c:temp RELEASE

所有三个配置文件都在IDE中工作。当我尝试使用MSBUILD并使用/p:PublishProfile选项时,问题就出现了。我尝试了几十个选项,但似乎没有一个调用我指定的配置文件。我认为应该像调用

一样简单:
msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=RELEASE

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

项目

未设置OutputPath属性

我试过使用/p:VisualStudioVersion=12.0/p:Configuration=XXX(即使在配置文件中设置)

使用下面给出的命令:

msbuild"路径 projectFlie xyz。csproj"/t:Publish/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>binRelease-Prod</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    </PropertyGroup>
    

确保OutputPath (Release-Prod)中的名称与配置名称完全匹配。

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

最新更新