首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NRefactory解析.csproj文件中的引用

使用NRefactory解析.csproj文件中的引用
EN

Stack Overflow用户
提问于 2012-10-14 19:58:09
回答 1查看 830关注 0票数 1

我正在使用NRefactory尝试解析.csproj文件中列出的所有编译文件,并希望能够解析项目中的所有类型。

我不能在不添加.csproj也包含的程序集引用的情况下解析所有类型,这就是我正在努力解决的问题。

摘自.csproj:

代码语言:javascript
复制
<ItemGroup>
    <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86" />
    <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86" />
    <Reference Include="mscorlib" />
    <Reference Include="System" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Core" />
</ItemGroup>

可以看到,XNA参考给出了一个全名,所以我可以很容易地使用Type.GetType("fullname").Assembly获得它们的程序集。但是在不带公钥的情况下传入Systemmscorlib将返回null。

如何仅从单词System和.csproj文件中的其他信息获取System的完整类型名称?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 07:55:57

您实际上想要加载哪个System.dll副本?一个在运行时可用的?还是C#编译器使用的那个?

如果项目以.NET 4.0为目标,则C#编译器将使用与针对.NET 4.5的项目不同的引用程序集。但是,在运行时,两者都使用相同的程序集(因为.NET 4.5安装会覆盖.NET 4.0)。

要获得与C#编译器使用的版本相同的版本,最好的解决方案是要求MSBuild (通过Microsoft.Build.dll)解析程序集引用。NRefactory CodeProject article上的示例应用程序使用这种方法,您可以随意复制其中的代码。

一般来说,获取正确的运行时程序集是不可能的,因为应用程序可以重新配置程序集的加载方式(app.config或AppDomain.AssemblyResolve事件处理程序)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12881989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档