我使用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" />
执行上述操作会导致构建/发布反复运行。
我尝试过命名目标不同,通过另一个目标调用它无济于事。
我如何运行&#34;发布&#34;项目没有进入重复循环?这可以用另一种方式完成吗?
答案 0 :(得分:4)
如果您只构建Visual Studio,那么将这样的内容放入您的csproj文件(最后)将起作用:
<Target Name="Deploy" AfterTargets="Build">
<MSBuild
Projects="$(ProjectPath)"
Targets="WebPublish"
Properties="PublishProfile=LocalDeploy"
/>
</Target>
但是,如果使用MSBuild构建,则会导致循环依赖。我还没有找到一个解决方案,允许你发布在Visual Studio和MSBuild中都有效的构建。
答案 1 :(得分:0)
以前我使用Visual Studio和TFS Server构建,工作正常,但是当我转移到GO-CD时,以下代码导致循环依赖创建包。
<Target Name="CopyLinkedContentFiles" AfterTargets="Build" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Copy SourceFiles="%(Content.Identity)"
DestinationFiles="%(Content.Link)"
SkipUnchangedFiles='true'
OverwriteReadOnlyFiles='true'
Condition="'%(Content.Link)' != ''" />