c#-错误MSB4006:目标依赖关系图中涉及目标的循环依赖

我在使用VS2012的csproj文件上有以下目标,一旦构建完成,我想在项目上运行“发布”.

这给了我以下错误“错误MSB4006:目标依赖关系图中涉及目标“ AfterBuild”的循环依赖”

<Target Name="AfterBuild">
  <Message Text="Running Publish..." Importance="high"/>
  <MSBuild Projects="$(ProjectPath)" Properties="DeployOnBuild=true;PublishProfile=WebDeploy;CreatePackageOnPublish=True;VisualStudioVersion=11.0"/>
</Target>

我试图用替换MSBuild步骤

<Exec Command="$(MSBuildBinPath)\MSBuild C:\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=WebDeploy /p:CreatePackageOnPublish=True /p:VisualStudioVersion=11.0" ContinueOnError="false" />

进行上述操作会导致构建/发布反复运行.

我尝试将目标命名为其他目标,但通过另一个目标将其命名为无效.

我如何在项目上运行“发布”而不进入重复周期?可以用其他方式做到吗?

解决方法:

如果仅在Visual Studio中进行构建,则将这样的内容放入csproj文件中(最后)将起作用:

 <Target Name="Deploy" AfterTargets="Build">
   <MSBuild
     Projects="$(ProjectPath)"
     Targets="WebPublish"
     Properties="PublishProfile=LocalDeploy"
   />
 </Target>

但是,如果使用MSBuild进行构建,则会导致循环依赖.我还没有找到一种解决方案,该解决方案可以让您发布在Visual Studio和MSBuild中都可以使用的版本.

上一篇:c#-检索要在Jenkins构建中使用的程序集版本


下一篇:cbuild-msbuild命令行尚不支持WebPublishMethod(FileSystem)