2017-06-01 93 views
4

是静态代码分析和代码契约不支持.NET标准与VS .NET标准/ .NET的核心代码分析和代码合同2017年

VS 2017年和.NET标准1.6或.NET核心类库似乎不具有选项来运行代码分析。

+0

.NET非标准只有relized,只是等待几个月 – 2017-06-01 06:19:52

+2

[启用代码分析(HTTPS ://github.com/dotnet/project-system/issues/988)似乎仍然预计将来发布。 –

+0

[代码合同似乎已经枯萎并死亡](https://github.com/Microsoft/CodeContracts/issues/409) –

回答

1

您可以使代码合同适用于.NET标准项目(我有);但是没有VS 2017 IDE支持在任何项目中启用Code Contracts,更不用说netstandard项目了。

守则合同重写(ccrewrite)当前崩溃和烧伤,如果你与portable PDBs项目运行它。在我看来,netstandard项目应该有可移植的PDB(它是唯一可以跨平台工作的PDB格式)。

对于我来说,这是交易断路器相对于使用上netstandard库代码契约长期。但是,我们有一些内部网络标准库,它们暂时使用具有代码合同的传统/ Windows PDB。我们使用传统/仅限于Windows的PDB与我们的netstandard库仅仅是因为它太费时地花费我们的代码合同代码,同时保持项目的完整性。

在我的回答对有关代码契约,I provide information on how to manually enable Code Contracts for VS 2017 builds VS 2017年支持的另一个问题。如果您也更改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> 
+0

感谢指示@crimbo。 – Ameya

相关问题