Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在Visual Studio 2017中生成web应用时DeployOnBuild未生效_Asp.net_Visual Studio_Tfs_Msbuild - Fatal编程技术网

Asp.net 在Visual Studio 2017中生成web应用时DeployOnBuild未生效

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

我在VS 2017中有一个web应用程序,为此我定义了一个发布配置文件,很高兴,它可以将网站部署/发布到文件系统上的某个位置

我知道这是常规构建过程的一部分,也就是说,在Visual Studio或TFS构建中构建解决方案是可能的,并且这可以通过以下部分实现:

<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您通过解决方法解决了这个问题吗?它对你有用吗?它不起作用,但在做了一些修改之后,它确实起作用了,当你让我走上正确的道路时,我会向上投票,但我会在有时间的时候发布最终答案。