【发布时间】:2015-12-31 22:23:50
【问题描述】:
您有一个包含数十个项目文件的大型 Visual Studio 解决方案。您将如何验证所有项目是否遵循其属性设置中的某些规则,并在添加新项目时强制执行这些规则。例如检查所有项目是否有:
TargetFrameworkVersion = "v4.5"
Platform = "AnyCPU"
WarningLevel = 4
TreatWarningsAsErrors = true
OutputPath = $(SolutionDir)bin
SignAssembly = true
AssemblyName = $(ProjectFolderName)
我自己知道两种方法,我将在下面的答案中添加,但我想知道人们如何进行这种类型的项目测试。我特别有兴趣了解可用的解决方案,例如库或为此构建任务,而不必发明新东西或从头开始编写。
【问题讨论】:
-
您是否考虑过在所有项目中包含一个通用文件,以及您提到的设置?这已经减少了任何事情发生的机会。在任何情况下,100% 确定的唯一方法是解析所有项目并检查设置 - 您可以编写 MsBuild 代码来执行此操作(类似于您的答案,但随后会自动运行,因此它会为每个项目自动运行,无需修改项目)或使用
Microsoft.Build.Evaluation命名空间中的类来编写一个工具,例如C# 来做到这一点。 -
*.*proj 文件是 XML,您可以编写一个程序来发现任何违反规则的行为,然后采取适当的措施。您也可以将其连接到您选择的 CI 框架中。
-
您最终找到解决方案了吗?我有一个类似的问题,我想跟踪包中使用的不同版本的 dll。
-
@Sam 不,但我和PSBuild 的作者 Ibrahim Hashimi 有一些 discussion,也许我们可以改进该工具以支持使用 powershell 进行这种验证。
标签: c# powershell msbuild csproj psake