我有很多项目,其中一些使用PostSharp的解决方案。 我最近使用的NuGet的MSBuild切换集成恢复的NuGet自动恢复。 这将导致恢复所有必要的包都包构建开始之前。 这个伟大的工程,但现在我遇到一个问题,经常在那里PostSharp将失败,错误的构建:
构建恢复的NuGet包。 再次生成项目,包括在构建这些软件包。 欲了解更多信息,请参见http://www.postsharp.net/links/nuget-restore 。
当我编辑项目文件我会看到以下条目:
<Import Project="..\..\packages\PostSharp.3.1.46\tools\PostSharp.targets" Condition="Exists('..\..\packages\PostSharp.3.1.46\tools\PostSharp.targets')" />
<Target Name="EnsurePostSharpImported" BeforeTargets="BeforeBuild" Condition="'$(PostSharp30Imported)' == ''">
<Error Condition="!Exists('..\..\packages\PostSharp.3.1.46\tools\PostSharp.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://www.postsharp.net/links/nuget-restore." />
<Error Condition="Exists('..\..\packages\PostSharp.3.1.46\tools\PostSharp.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://www.postsharp.net/links/nuget-restore." />
</Target>
正如你所看到的,有存在的时候我的机器上的NuGet包,也是我的机器上不存在错误条件。 看来,这些条件进行评估,因为变量$(PostSharp30Imported)永远不会设置。 我假设这个东西是依赖于恢复的MSBuild的集成版本,但我没有足够的MSBuild经验,知道肯定。
我能够通过简单地在项目文件中删除第二差错情况(因为我保证该项目建立的时候有文件)来解决这个问题,但它似乎是PostSharp的任何升级或增加导致项目文件要恢复到老样子,并阻止我的解决方案从建筑。
这是PostSharp一个bug,或者是有一些其他的方式使用的NuGet自动恢复不会引起这个问题时,我应该与PostSharp工作?