我做了一个C#9源代码生成器,您可以在这里找到
当我在另一个解决方案中使用整个项目并将其作为项目引用时,它可以工作,但是当我使用当前配置将其上载到Nuget(此处)时,它不起作用。
如何正确配置C#9源生成器以用作Nuget包?我的项目有什么问题?
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>0.0.2</Version>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageTags>dotnet</PackageTags>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<GenerateRepositoryUrlAttribute>true</GenerateRepositoryUrlAttribute>
<PackBuildOutput>true</PackBuildOutput>
<PackageId>MockableStaticGenerator</PackageId>
<PackOnBuild>true</PackOnBuild>
<PackFolder>analyzers\cs</PackFolder>
<DebugType>embedded</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup>
<RestoreAdditionalProjectSources>https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json ;$(RestoreAdditionalProjectSources)</RestoreAdditionalProjectSources>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.8.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
如果解压缩nuget软件包,则会看到该软件包存储在lib目录中。它必须存储在分析器目录中。
一种方法是在csproj中添加以下内容:
<ItemGroup>
<None Include="$(OutputPath)\$(AssemblyName).dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>
如果您是多目标,则应为:
<ItemGroup>
<None Include="$(OutputPath)\netstandard2.0\$(AssemblyName).dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>
这将把您的项目既作为库又作为分析器。
要将其仅用作分析器,请添加以下内容:
<PropertyGroup>
<IncludeBuildOutput>false</IncludeBuildOutput>
</PropertyGroup>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句