我在使用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中都可以使用的版本.