这个问题已经被问了很多次,并且在几个版本的Visual Studio中复杂化了。到目前为止,我所做的是:
- 在Visual Studio 2013中创建新的Web应用程序
- 创建3个"发布"配置文件。Web发布到我的本地IIS, DEBUG和RELEASE分别做"文件复制"到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属性,执行以下操作:
- 转到。抛出错误的项目的csproj文件
-
查找特定配置的属性组。属性组应该像这样:
<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)中的名称与配置名称完全匹配。