MS Build fail CopyLocal True
本文关键字:True CopyLocal fail Build MS | 更新日期: 2023-09-27 18:20:35
我有一个包含100多个c#项目的解决方案。我们总是将所有程序集的CopyLocal选项设置为false,以避免出现某些问题。有时,一些开发人员在项目文件中使用程序集的CopyLocal选项True进行检查。这会在稍后运行软件时产生问题
如果CopyLocal选项为True,是否可能使生成活动失败?
我们正在通过MS build和Cruise control net实现构建过程的自动化。
简短回答:是!
我不是MSBuild专家,但我知道如何使用NAnt。它非常简单,使用MSBuild实现相同的结果应该没有太大区别。这就是过程:
- 分析解决方案文件以获取解决方案中包含的所有项目文件的路径。不幸的是.sln文件不是xml,但它们是结构化的
- 对于每个项目文件:分析项目文件以获取项目的所有引用,并检查CopyLocal=True。如果有的话:失败。由于.csproj文件是xml,因此可以通过XPath表达式轻松完成这一操作。对于CopyLocal设置为
True
的程序集引用:
count(/Project/ItemGroup/Reference/Private[text()="True"])
项目参考:
count(/Project/ItemGroup/ProjectReference/Private[text()="True"])
如果结果大于0,则具有CopyLocal设置为True
的引用,因此生成失败陷阱:请注意,如果缺少节点Private
,CopyLocal也被视为True
。