首页 > 解决方案 > 在 csproj 中标记程序集 CLSCompliant

问题描述

在这个问题的回复中解释了如何InternalsVisibleTocsproj中设置。

我认为这也适用于CLSCompliant

<ItemGroup>
    <AssemblyAttribute Include="System.CLSCompliant">
      <_Parameter1>true</_Parameter1>
    </AssemblyAttribute>
</ItemGroup>

但不是!MSBuild抱怨true无法转换为 from stringto bool

> dotnet build
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 418.35 ms for C:\Users\coder\OneDrive\Projects\pickall\src\PickAll.Sample\PickAll.Sample.csproj.
  Restore completed in 418.33 ms for C:\Users\coder\OneDrive\Projects\pickall\src\PickAll.Specs\PickAll.Specs.csproj.
  Restore completed in 418.33 ms for C:\Users\coder\OneDrive\Projects\pickall\src\PickAll\PickAll.csproj.
obj\Debug\netstandard2.0\PickAll.AssemblyInfo.cs(14,32): error CS1503: Argument 1: cannot convert from 'string' to 'bool' [C:\Users\coder\OneDrive\Projects\pickall\src\PickAll\PickAll.csproj]
obj\Debug\net461\PickAll.AssemblyInfo.cs(14,32): error CS1503: Argument 1: cannot convert from 'string' to 'bool' [C:\Users\coder\OneDrive\Projects\pickall\src\PickAll\PickAll.csproj]

Build FAILED.

obj\Debug\netstandard2.0\PickAll.AssemblyInfo.cs(14,32): error CS1503: Argument 1: cannot convert from 'string' to 'bool' [C:\Users\coder\OneDrive\Projects\pickall\src\PickAll\PickAll.csproj]
obj\Debug\net461\PickAll.AssemblyInfo.cs(14,32): error CS1503: Argument 1: cannot convert from 'string' to 'bool' [C:\Users\coder\OneDrive\Projects\pickall\src\PickAll\PickAll.csproj]
    0 Warning(s)
    2 Error(s)

Time Elapsed 00:00:18.37

有没有办法在标签内正确写入布尔文字_Parameter1

标签: c#msbuild

解决方案


拉取请求(允许为 WriteCodeFragment 任务指定参数类型名称)最近已合并到 MSBuild 存储库中,它可以完全按照原始问题中的描述在 csproj 文件中标记程序集 CLSCompliant。

它应该很快(2021 年 5 月)在 16.10 预览版 3 中可用(不确定是指 MSBuild 版本还是 Visual Studio 版本)。从提到的拉取请求评论中引用用户 Forgind:

这应该在 16.10 预览版 3 中可用。当可用时,我会尽量记住在此线程中对您执行 ping 操作。那应该是从现在起大约一个月的时间。


推荐阅读