如何打包 C# 9 源生成器并将其上传到 Nuget?

2023-12-21

我做了一个C#9源代码生成器,你可以找到它here https://github.com/HamedFathi/MockableStaticGenerator

当我在另一个解决方案中使用整个项目并将其作为项目引用时,它可以工作,但是当我将其与当前配置一起上传到 Nuget 时(here https://www.nuget.org/packages/MockableStaticGenerator/) 这是行不通的。

如何正确配置 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何打包 C# 9 源生成器并将其上传到 Nuget? 的相关文章

随机推荐

  • Flexslider 和从右到左的语言支持

    我在 WordPress 上安装了一个包含 Flexslider 的模板 我的语言是从右到左 RTL 书写的 当页面为 RTL 时 Flexslider 停止并且不显示图像 我该如何解决这个问题 Flex 滑块不支持 RTL 语言 解决这个
  • C++:崩溃时不显示 glibc 的回溯和内存映射

    我正在使用 Python 进行自动 C 代码测试 所以我有一个编译和执行 C 代码的 Python 脚本 当 C 代码崩溃时 即使我重定向 libc 输出也可以从我的 Python 脚本输出中看到cout and cerr正在执行的 C 程
  • 从数据库更新模型时出现实体框架错误,反之亦然

    当我尝试使用 VS Express 2013 for web EF6 1 1 和 NET Framework 4 5 从数据库更新模型时 会发生以下情况 在本例中 我只是在表定义中向表中添加了一个字段并更新了数据库 之后 我在 EDMX 模
  • 使用GridSearchCV时出现值错误

    我正在使用 GridSearchCV 进行分类 我的代码是 parameter grid SVM dual True False loss squared hinge hinge penalty l1 l2 clf GridSearchCV
  • Autofac PropertiesAutowired - 是否可以忽略一个或多个属性?

    尽管建议通过构造函数传递依赖项 但我发现使用无参数构造函数然后自动装配所有属性的开发成本显着减少 并使应用程序更易于开发和维护 然而有时 例如在视图模型上 我有一个在容器中注册的属性 但我不想在构造时填充该属性 例如绑定到容器的所选项目 有
  • 谷歌移动视觉库无法下载

    我正在尝试将 Google Mobile Vision TextRecogniser API 实现到我的应用程序中 以读取给定图像中的文本 当我尝试使用该功能时 出现以下错误 W DynamiteModule Local module de
  • 为什么 Julia 不鼓励对 UTF8 字符串建立索引?

    Julia 的入门指南 在 Y 分钟内学习 Julia https learnxinyminutes com docs julia 阻止用户索引 UTF8 字符串 Some strings can be indexed like an ar
  • 如何调整表单大小以自动适应其内容?

    我正在尝试实现以下行为 表单上有一个选项卡控件 在该选项卡控件上有一个树视图 为了防止出现滚动条 我希望表单在第一次显示时根据树视图的内容更改其大小 如果树视图有太多节点无法在窗体的默认大小上显示 则窗体应更改其大小 以便树视图上没有垂直滚
  • 无法在列表框中绑定命令

    我的 WPF 使用 MVVM 方法 我正在尝试在列表控件中绑定 2 个控件
  • 我自己的 R 中的 K 均值算法

    我是 R 编程的初学者 我正在 R 中进行此练习作为编程入门 我已经在 R 中实现了自己的 K 均值实现 但在某一点上卡住了一段时间 我需要达成共识 算法迭代直到找到每个簇的最佳中心 这是没有迭代的原始算法 它只是从整个数据中随机选取一个数
  • 在ColdFusion中,有没有办法确定代码在哪个服务器上运行?

    ColdFusion 代码中是否有任何方法可以确定代码在哪个服务器上执行 我有一些负载平衡的 ColdFusion 服务器 当我捕获异常时 我希望能够知道代码正在哪个服务器上运行 因此我可以将该信息包含在日志记录 报告代码中 服务器是 Wi
  • 当您无法提供色彩美感时手动创建图例

    在试图回答时这个问题 https stackoverflow com questions 34066131 can data points be labeled in stripcharts 34068263 创建所需绘图的一种方法是使用g
  • 为什么在JPA Hibernate中更新查询;所有属性都在 SQL 中更新

    我将 JPA 与 Hibernate 一起使用 当我修改对象的一个 属性并更新它时 生成的 SQL 显示所有列都已更新 为什么它不只更新修改的列 有没有办法实现这一点 因为我觉得这样会更加优化 默认情况下 hibernate 包含更新查询中
  • 在 NetBeans 中找不到主类

    我一直在为我的编程课做作业 我正在使用 NetBeans 我完成了我的项目并且运行良好 当我尝试运行它时 收到一条消息 未找到主类 这是主要的一些代码 package luisrp3 import java io FileNotFoundE
  • 如何使用 Seaborn 在 hexbins 上绘制回归线?

    我终于成功地将我的 hexbin 分布图整理成几乎漂亮的东西 import seaborn as sns x req apply clicks y req reqs wordcount sns jointplot x y kind hex
  • 将 PySpark DenseVector 转换为数组

    我正在尝试将 DenseVector 的 pyspark 数据帧列转换为数组 但总是出现错误 data Vectors dense 8 0 1 0 3 0 2 0 5 0 Vectors dense 2 0 0 0 3 0 4 0 5 0
  • 通过计算雅可比行列式,有效地使用 PyTorch 的 autograd 和张量

    在我之前的question https stackoverflow com questions 67320792 how to use pytorchs autograd efficiently with tensors 67334809
  • jQuery 输入掩码

    嘿 我是 jQuery 新手 我想检查输入框上的 onblur 这种格式 cda 123 表示前 3 个字符空间和 3 个整数 通常我看到代码是写在输入 ID 上的 但如果我想写在类上 那么我该怎么做 例如我有 class InputMas
  • Python - 从多个 Zip 文件中提取 CSV 文件并合并数据

    我有一个 Python 脚本和 pandas 来组合多个 ZIP 文件 我在这里使用 GitHub 存储库中托管的数据 https github com statistikat coronaDAT https github com stat
  • 如何打包 C# 9 源生成器并将其上传到 Nuget?

    我做了一个C 9源代码生成器 你可以找到它here https github com HamedFathi MockableStaticGenerator 当我在另一个解决方案中使用整个项目并将其作为项目引用时 它可以工作 但是当我将其与当