如何解决nuget包文件夹未引用System.Reflection
我正在将System.Reflection
nuget软件包安装到我的项目中,但是当我检查dll的引用路径时,它显示了C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\Facades\System.Reflection.dll
我什至尝试从nuget包文件夹中删除它并手动添加它,但是它仍然显示相同的路径。如何确保它是从nuget包文件夹而不是程序文件中引用的?
解决方法
System.Reflection
软件包几乎没有任何内容,但文件夹为空。
在.NET Framework 4.6.2的lib
文件夹中,只有一个System.Reflection.dll
,但是除了引用mscorlib
之外,该程序集也为空。因此,除了.NET Framework 4.6.2,NuGet软件包文件夹或您的项目输出目录中没有任何程序集。这些程序集由基础框架运行时提供。
您看到的路径是参考程序集的路径。这也是软件包在ref
文件夹中提供的内容。有关引用程序集和运行时程序集之间的区别,请参见此related post。引用@hansPassant和@MartinUllrich:
因此,正如Hans Passant已经提到的那样,“引用”程序集用于构建程序,这意味着这是作为引用传递给编译器的程序集。但是,在运行时,实现可能有所不同。除了框架本身之外,任何分发单个编译时参考程序集但为每个目标(.NET Core,.NET Framework,MonoAndroid等)提供各种实现程序集的NuGet包都可以使用此框架。 NuGet包中的lib文件夹甚至可以用于添加更多私有实现程序集,而这些程序集不希望消耗应用程序直接引用。
引用程序集仅具有“存根”方法,以便定义可用的API表面,并且编译器可以对其进行检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。