gpt4 book ai didi

c# - 如何控制 .Net 在命名空间冲突中选择哪个程序集?

转载 作者:太空狗 更新时间:2023-10-29 21:23:35 25 4
gpt4 key购买 nike

出于某种原因或其他原因,我需要(多多包涵)使用 System.Text.Encoding 命名空间的 WinRT 版本。我可以手动添加对程序集的引用等,但它仍将使用 mscorlib 的实现。而且我显然无法完全删除 mscorlib。

如何强制我的项目使用 WinRT 的 System.Text.Encoding.dll 而不是 mscorlib?

基本上,我需要它来生成这段 IL:

call class [System.Text.Encoding]System.Text.Encoding [System.Text.Encoding]System.Text.Encoding::get_UTF8()

而不是这个:

call class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::get_UTF8()

最佳答案

您需要为引用设置别名。为此,请转到“解决方案资源管理器”并选择要为其设置别名的引用。查看属性并编辑别名字段以添加唯一的别名。

Alias field in properties with custom alias, myalias

定义唯一别名后,您可以编辑代码以添加 extern alias 声明。

extern alias myalias;

最后,您通过别名引用类型,如(此示例别名为 System.dll):

myalias::System.Diagnostics.Trace.WriteLine("I referenced this via my alias.");

这现在以您想要的确切引用为目标,即使其他引用也提供具有相同名称和命名空间的类型。

有关别名的更多信息,请参阅 this StackOverflow answerWhat use is the Aliases property of assembly references .

关于c# - 如何控制 .Net 在命名空间冲突中选择哪个程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com