如何强制执行特定版本的.net框架

时间:2009-08-26 20:25:30

标签: .net build-automation

我们的印象是,在解决方案的属性上设置目标框架会限制该应用仅使用该框架或以下的功能。我们刚刚发现,有人可以添加引用并开始使用更高版本的框架中的代码,编译器不会抱怨一点。既然我们希望将来阻止这种情况,那么有没有人对如何检测引用更高版本的内容有任何想法?如果有人在我们的目标之上添加代码,我需要使构建失败。

2 个答案:

答案 0 :(得分:1)

假设您的目标是.NET 2.0及更高版本......如果在项目的引用中检测到对System.Core或其他3.x程序集(例如WPF)的引用,则构建可能会失败。

<强>更新

您可以从每个.PROJ文件中检查:

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

然后,在<ItemGroup>标记内:

<Reference Include="System.Core">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>

这可能是一个自定义的NAnt任务,或者编写自己的解析器来查找这些节点并使构建失败。

答案 1 :(得分:0)

如果有效,你为什么需要阻止它?只要您不使用任何新功能,我相信可以使用“前向”兼容的DLL。