.NET Standard 不支持静态代码分析和代码合约吗?
VS 2017和.NET Standard 1.6或.NET核心类库似乎没有运行代码分析的选项。
答案 0 :(得分:2)
您可以使代码约定适用于.NET标准项目(我有);但是,没有VS 2017 IDE支持在任何项目中启用代码合同,更不用说netstandard项目了。
如果您在具有portable PDBs的项目上运行代码合同重写器(ccrewrite),则它当前会崩溃并烧毁。在我看来,netstandard项目应该有便携式PDB(它是唯一可以跨平台工作的PDB格式)。
对我而言,这是关于长期使用网络标准库的代码合同的交易破坏者。但是,我们有一些内部netstandard库暂时使用带有代码约定的旧版/ Windows PDB。我们只在遗传/仅使用Windows的PDB中使用我们的netstandard库,因为在保留项目完整性的同时,我们要立即撕掉所有代码合同代码。
在我对VS 2017支持代码合同的另一个问题的回答中,I provide information on how to manually enable Code Contracts for VS 2017 builds。如果您还更改了PDB类型,这将适用于netstandard项目。这可以使用项目属性UI完成,或者通过向csproj或导入的msbuild文件添加以下内容:
<!-- For netstandard and netcoreapp, DebugType must be full or pdbonly for ccrewrite to work -->
<PropertyGroup Condition=" '$(Configuration)' != 'Release' ">
<DebugType>full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<CodeContractsRuntimeCheckingLevel>ReleaseRequires</CodeContractsRuntimeCheckingLevel>
<DebugType>pdbonly</DebugType>
</PropertyGroup>