【问题标题】:How to exclude Microsoft.CodeAnalysis.* DLLs from publishing如何从发布中排除 Microsoft.CodeAnalysis.* DLL
【发布时间】:2020-09-24 08:55:02
【问题描述】:

我编写了依赖于 Microsoft.AspNetCore.Mvc v2.2.0 包的 .NET Standard 2.1 库组件,它间接引用了 Microsoft.CodeAnalysis.CSharp.dll、MicrosoftCode.Analysis.dll 和 Microsoft.CodeAnalysis.Razor。 dll。当我从 .NET Core 3.1 应用程序站点引用我的组件并发布该站点时,Microsoft.CodeAnalysis.* dll 也会被发布。有没有办法排除 Microsoft.CodeAnalysis.* dll 的发布?我不需要它们来生产。

这是我对 .NET Standard 2.1 CSPROJ 文件的引用:

 <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.8" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.8" />
<PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="3.1.8" />
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.8" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="3.1.8" />
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.8" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="3.1.8" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />

提前致谢!

【问题讨论】:

  • 你能从你的 Net Standard 的 csproj 文件中显示你的包引用吗?
  • 查看我的原帖。我从 csproj 文件中添加了引用。

标签: asp.net-core .net-core


【解决方案1】:

问题似乎来自直接引用 AspNetCore 包。

如果您可以将您的类库更改为以netcoreapp3.1 而不是netstandard,则可以使用FrameworkReference 来替换它们。请注意,FrameworkReference 仅对面向 Net Core 3.x 及更高版本的程序集有效。 Reference

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

或者,如果您需要同时支持netstandardnetcoreapp,您可以使用条件引用。

<!-- Framework reference for netcoreapp -->
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<!-- Common dependencies -->
<ItemGroup>
  <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.8" />
  <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>

<!-- netstandard dependencies -->
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
  <PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.8" />
  <PackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.8" />
  <PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="3.1.8" />
  <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.8" />
  <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
  <PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="3.1.8" />
  <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
  <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="3.1.6" />
  <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="3.1.8" />
</ItemGroup>

请注意,我必须猜测哪个包引用了您的包库需要,因此您需要根据需要进行调整

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2020-09-21
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
相关资源
最近更新 更多