如何从包中添加新的构建操作

How to add new in Build Action from a package

我想在 Item > Properties > “Build Action”下添加一个新的 item/type 来自包(即 nuget)

我参考了Avalonia:

我删掉了很多不必要的东西,结果是这样的:

我已经盯着这个和 Avalonia 的代码看了好几个小时,我非常确定它们是相似的,但是我似乎无法弄清楚为什么 Avalonia 的类型出现而我的没有。据我所知,最重要的部分是 AvailableItemNamePropertyPageSchema,它们都存在于 props 文件中。我也非常确定 props 文件已加载完毕。我的项目依赖于其他文件(在同一个 props 文件中定义),如果它们没有定义

就会崩溃 InvalidOperationException: Sequence contains no elements

之后,我通过 mmaitre314 发现了这个 guide。它将 AvailableItemNamePropertyPageSchema 属性放在目标中而不是道具中,我已经尝试这样做希望它会起作用,但是它仍然没有出现在构建操作中

感谢任何帮助,提前致谢!

我认为它应该有效。做了一些测试,看来我们需要做点什么或者等一段时间让它显示(延迟?也许)。

很难说哪一步重要或让它起作用,但我确实做了这些事情:

1). 右键单击​​项目(测试项目)> 卸载项目 > 再次右键单击它 > 重新加载项目。

2).关闭项目(测试项目),然后重新打开。

3). 创建了一个 .ptxt 文件并将其包含到项目中。排除了再包含。

我不确定为什么、如何或什么但是:我删除了项目的本地副本,从提供的 GitHub link 中克隆了它,重建它并重新引用了它,现在可以使用了。

我有一些猜测为什么它可能没有用,尽管它们似乎都是错误的:

  • 来源Generators/Analyzers 无法定义自己的内容types/build 操作。删除分析器部分没有帮助
  • 我在 .NET Core 3.1 项目上测试它,但它是一个 .NET Standard 2.0 源代码生成器。重新定位任何一个项目以匹配都没有帮助
  • 架构文件、道具、and/or 目标文件格式不正确。现在检查了大约 10 次以上,我很确定这不是问题所在
  • 测试项目的 .vsobj 文件夹正在缓存项目的旧版本,其中没有自定义类型。我已经删除了它们,尽管它没有帮助,此外,从 GitHub 上的精确副本重建工作,而不是我的本地副本
  • 这个项目的名字太long/badly格式了(我快绝望了)。同样错误的是,创建了一个名为 ClassLibrary1LONGNAMESourceGenerator 的项目(肯定包括数字),复制文件,然后重建它。成功了,所以名字不是问题
  • 其他几个疯狂的猜测

谢谢大家的帮助!