【问题标题】:.NET Standard/.NET Core Code Analysis and Code Contracts with VS 2017.NET Standard/.NET Core 代码分析和 VS 2017 代码契约
【发布时间】:2017-06-01 06:17:29
【问题描述】:

.NET Standard 不支持静态代码分析和代码协定吗?

VS 2017 和 .NET Standard 1.6 或 .NET 核心类库似乎没有运行代码分析的选项。

【问题讨论】:

标签: c# .net-core .net-standard


【解决方案1】:

您可以使代码合同适用于 .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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多