Asp.net 在Visual Studio 2017中生成web应用时DeployOnBuild未生效
我在VS 2017中有一个web应用程序,为此我定义了一个发布配置文件,很高兴,它可以将网站部署/发布到文件系统上的某个位置 我知道这是常规构建过程的一部分,也就是说,在Visual Studio或TFS构建中构建解决方案是可能的,并且这可以通过以下部分实现:Asp.net 在Visual Studio 2017中生成web应用时DeployOnBuild未生效,asp.net,visual-studio,tfs,msbuild,Asp.net,Visual Studio,Tfs,Msbuild,我在VS 2017中有一个web应用程序,为此我定义了一个发布配置文件,很高兴,它可以将网站部署/发布到文件系统上的某个位置 我知道这是常规构建过程的一部分,也就是说,在Visual Studio或TFS构建中构建解决方案是可能的,并且这可以通过以下部分实现: <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <DeployOnBuild>True</D
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DeployOnBuild>True</DeployOnBuild>
<PublishProfile>ProfileName</PublishProfile>
</PropertyGroup>
然而,这并没有任何影响,构建输出日志只显示正常的构建发生,并且没有试图发布
这项工作是否应该像here和MSDN的各种答案中所建议的那样进行?如果是,上面的问题是什么
如果有人想知道,这样做的原因是TFS正在生成的单个解决方案无法按照生成定义MSBuildArguments设置的要求使用单独的发布配置文件单独发布>1个web应用程序。在项目文件中静态设置时,会忽略DeployOnBuild属性。显然,它是一个特殊属性,必须在命令行上全局设置
作为一种解决方法,可以再次调用MSBuild来传递属性。看
使用文本编辑器打开.csproj文件。
在末尾添加下面的代码段,然后保存它
以下线程供您参考:
我想感谢@Andy MSFT,他给出了一个非常接近的答案,但最后遗漏了一些重要的细节,需要进行一些更正才能使其生效 首先,工作解决方案是:
<Target Name="Deploy" AfterTargets="Build">
<MSBuild
Condition="'$(DeployOnBuild)'!='true' And '$(Configuration)|$(Platform)' == 'Release|AnyCPU'"
Projects="$(ProjectPath)"
Targets="WebPublish"
Properties="DeployOnBuild=true;PublishProfile=FolderProfile"/>
</Target>
根据问题,如果安装了Visual Studio 2017的Web开发人员工具,WebPublish目标将仅在TFS构建服务器上工作。请注意,“项目”属性必须设置为$ProjectPath,这与Andy的答案也不同,这也是该属性工作所必需的。谢谢,看起来是一个很好的方法-可以尝试一下。@JamesHarcourt您通过解决方法解决了这个问题吗?它对你有用吗?它不起作用,但在做了一些修改之后,它确实起作用了,当你让我走上正确的道路时,我会向上投票,但我会在有时间的时候发布最终答案。