使用 MAUI 项目中的文件在引用的项目/包 c 中创建源文件编译时#

Use file from MAUI project to create a source file compile time in referenced project/package c#

提问人:Prabhav Mehra 提问时间:5/24/2023 更新时间:5/24/2023 访问量:87

问:

我在这个问题上停留了一段时间,并正在寻找实现想法和/或代码片段。

所以我有 2 个项目:

具有 xml 文件的 dotnet maui 项目。

执行某些操作的类库。

现在,MAUI 应用通过包或项目引用引用类库。

我想在编译时在类库中创建一个 c# 类,其属性名称与 MAUI 应用程序中存在的 xml 文件中的键值对同步。

因此,如果 xml 文件具有键“key1”的标签,则类型为 string。然后,它将创建一个 get set 属性,其中 key1 作为属性名称。

我尝试了不同的方法,但似乎没有奏效。

SourceGenerators 就是其中之一。但是,如果将源生成器引用到 MAUI 应用以创建 c# 类,它将在 MAUI 应用中创建它,而不是在类库中创建它。

我有从 xml 文件创建 c# 类的代码,但我的方法不正确。要么我必须在类库中放置一个.xml以使用源代码生成器创建 c# 类,要么是其他一些不需要的东西。

有谁知道如何去做?

谢谢。

C# .NET 毛伊 岛源生成器 csharp-source-generator

评论

0赞 Guru Stron 5/24/2023
听起来像是一个 XY 问题。将 XML 文件移动到库中,或在主应用程序中生成文件。
0赞 ToolmakerSteve 5/25/2023
我不明白您如何作为解决方案构建的一部分做到这一点,因为这是主程序和库之间的“循环依赖关系”。两者都不能先建造,因为它们都相互影响。恕我直言,必须将 xml 文件复制到库中。我不知道是否有任何方法可以在xml文件的更新时间戳更改时自动发生这种情况。
0赞 Prabhav Mehra 5/25/2023
@ToolmakerSteve有可能在第二个类库中有一个生成器来访问文件并创建 C# 代码。所以我正在研究一个类库,它有一个源生成器,它在同一项目中创建一个 c# 类,并在该项目中使用 c# 类。并且可以使用 additionalFiles 或其他一些构建操作集来使用 maui 中的文件吗?
0赞 Prabhav Mehra 5/25/2023
@GuruStron在主应用程序中生成文件是不可能的,因为我想使用类库中的 c# 类来执行操作。从本质上讲,它将有助于创建一个 api。并且无法将 xml 移动到类库,因为多个项目可以引用类库,并且具有不同的 xml 文件,但具有不同的标记。所以我想根据.xml内容创建属性。
0赞 Guru Stron 5/25/2023
@PrabhavMehra 那么,库应该如何确定要使用哪个 XML 文件呢?

答: 暂无答案