错误 MSB4006:在涉及目标的目标依赖图中存在循环依赖

Anu*_*dav 5 c# msbuild build-process visual-studio-2012

我在使用 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>
Run Code Online (Sandbox Code Playgroud)

我曾尝试用替换 MSBuild 步骤

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

执行上述操作会导致一遍又一遍地运行构建/发布。

我试过命名不同的目标,通过另一个目标调用它无济于事。

如何在不进入重复循环的情况下在项目上运行“发布”?这可以用另一种方式完成吗?

Mic*_*ltu 5

如果您只在 Visual Studio 中构建,那么将类似的内容放入您的 csproj 文件(最后)将起作用:

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

但是,如果您使用 MSBuild 进行构建,这将导致循环依赖。我还没有找到一个解决方案,允许您在 Visual Studio 和 MSBuild 中发布构建版本。