Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何获取系统程序集的路径_C# - Fatal编程技术网

C#如何获取系统程序集的路径

C#如何获取系统程序集的路径,c#,C#,我需要在我的c#代码中找到System.dll的汇编路径,以便在代码中使用roslyn执行c#文件 typeof(Enumerable).Assembly.Location 返回“C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC\MSIL\\System.Core\\v4.0\u 4.0.0.0\u b77a5c561934e089\\System.Core.dll”,这很好,因为我需要System.Core.dll,但我也需要System.dll 但是我似乎

我需要在我的c#代码中找到
System.dll
的汇编路径,以便在代码中使用roslyn执行c#文件

typeof(Enumerable).Assembly.Location
返回
“C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC\MSIL\\System.Core\\v4.0\u 4.0.0.0\u b77a5c561934e089\\System.Core.dll”
,这很好,因为我需要
System.Core.dll
,但我也需要
System.dll


但是我似乎找不到包含在
System.dll

System中的类型。Uri
是系统程序集中的一个类型示例

快速PowerShell确认:

[System.Uri].Assembly.Location

您需要使用
typeof(Enumerable).Assembly.getReferenceAssemblys()
,以及它们的依赖项等等来遍历依赖项树。

您可以使用dotPeek。它是免费的,您可以看到dll文件的元数据。

现在您可以看到您可以使用例如
FileStyleUriParser

var path = typeof(FileStyleUriParser).Assembly.Location;
瞧,你有通往System.dll的路径

也可以使用Visual Studio对象浏览器<代码>视图->对象浏览器或
Ctrl+Alt+J
可以获得相同的结果。

在Visual Studio(至少2017年)中,右键单击对
系统的项目引用,然后单击“在对象浏览器中查看”

请尝试
System.Uri
——事实上,
System.dll
并不包含人们合理地认为它包含的内容。我肯定有人真的想到了去哪里。或者不是。例如:


听起来像是一个x-y问题-想分享一下为什么需要这些信息吗?我正在用CSharpCompilation编译一个c#文件,我想传递对诸如System之类的程序集的引用不确定为什么
对象
会提供System.Core.dll的路径。你确定那是对的吗?@Madth你说得对,不过我本想写EnumerableCurious的。。。如果您需要它的引用,您是否已经知道您需要它的类型?这取决于实现。它可能会在版本之间更改。@DanielA.White如果此特定实现细节更改,它肯定会中断,但这是您的技术债务sTo Daniel A.White的观点是,
System.Uri
位于.NET Core 2.1中的System.Private.Uri.dll中,而System.dll只不过是转发类型。