- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了一个问题,我的 .Net 构建系统在错误的文件夹中查找其框架引用。机器上安装了.Net 4.0和Visual Studio 2010,.Net版本低于4.0的项目会出现这个问题(我的例子是.Net 3.5)。这个问题看起来像是构建问题,但深入研究后,我发现 Microsoft.Build.Tasks.v4.0.dll(在构建过程中调用)正在调用 mscoree.dll 并返回错误信息:
(反编译源)FrameworkLocationHelper。 ConstructDotNetFrameworkPathFromRuntimeInfo(字符串请求版本):
int num1 = 264;
int num2 = 25;
StringBuilder pDirectory;
StringBuilder pVersion;
uint requestedRuntimeInfo;
do
{
pDirectory = new StringBuilder(num1);
pVersion = new StringBuilder(num2);
uint dwDirectoryLength;
uint dwlength;
--------> requestedRuntimeInfo = NativeMethodsShared.GetRequestedRuntimeInfo(string.Empty, requestedVersion, string.Empty, 16U, 64U, pDirectory, num1, out dwDirectoryLength, pVersion, num2, out dwlength);
num1 *= 2;
num2 *= 2;
}
while ((int)requestedRuntimeInfo == -2147024774);
if ((int)requestedRuntimeInfo == 0)
return Path.Combine(((object)pDirectory).ToString(), ((object)pVersion).ToString());
问题是对 NativeMethodsShared.GetRequestedRuntimeInfo(...) 的调用,它在其他机器上返回请求的 .Net 版本(3.5、3.0 和 2.0),但在有问题的机器上每次返回 4.0,导致引用 .Net 4.0 的引用路径(这不应发生在 .Net 3.5 构建中)。不幸的是,这是对 mscoree.dll 的调用,我不知道如何调试它或找到源代码:
[DllImport("mscoree.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern uint GetRequestedRuntimeInfo(string pExe, string pwszVersion, string pConfigurationFile, uint startupFlags, uint runtimeInfoFlags, StringBuilder pDirectory, int dwDirectory, out uint dwDirectoryLength, StringBuilder pVersion, int cchBuffer, out uint dwlength);
供引用,其他工作机器将有这些框架目录:
目标框架目录:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\,C:\Windows\Microsoft.NET\Framework\v3.5\,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\,C:\Windows\Microsoft.NET\Framework\v3.0\,C:\Windows\Microsoft.NET\Framework\v2.0.50727\
虽然问题机器有这些框架目录:
目标框架目录:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\,C:\Windows\Microsoft.NET\Framework\v4.0.30319\,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\,C:\Windows\Microsoft.NET\Framework\v4.0.30319\,C:\Windows\Microsoft.NET\Framework\v4.0.30319\
此外,我已经卸载并重新安装了 .Net 2.0、3.0、3.5、4.0 和 Visual Studio 2010
最佳答案
Mscoree.dll 不是 Oracle。使用 SysInternals 的 ProcMon 实用程序找出计算机注册表的保存位置。最好将跟踪与可以快速缩小范围的机器进行比较。
关于c# - mscoree.dll 的 GetRequestedRuntimeInfo() 导致不正确的 TargetFrameworkDirectories - 如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784509/
谁能告诉我在单声道编译器(Linux 系统)中在哪里可以找到 MSCorEE.h 和 corerror.h(或等效文件)。我正在尝试编译从 native 代码启动 C# CLR 的代码,它在 Wind
我知道 .Net Framework 运行时包含在 mscoree.dll 中。任何人都可以帮助我知道 Windows 操作系统的哪个部分或 Windows 的哪个进程将此 dll 加载到内存中。提前
如何在不引用 mscoree 的情况下枚举所有进程的域。是否可以?我从 2007 年的某个地方在互联网上找到了一些解决方案。但它枚举并清空了集合。 代码如下: public static class
我想澄清一些事情。 运行 .NET 控制台应用程序时,mscorlib.dll/mscoree.dll 是否会加载到进程的虚拟地址空间中? mscorlib.dll 和 mscoree.dll (CL
当我使用 regasm.exe 注册 .NET 程序集时,注册表项 HKEY_CLASSES_ROOT\CLSID{111E32AD-4BF8-495F-AB4D-6C61BD463EA4}\Inpr
几本书(T. Soulami 的 Windows 调试 [2012] 内部,A. Troelsen 的带有 .NET 3.0 的 Pro C#)指定 的位置mscoree.dll 作为系统32 文件夹
在 Windows 中,mscoree.dll 是 CLR 应用程序的开始,但在 Mono Linux 中它在哪里或它是什么? 最佳答案 mono中没有mscoree.dll。 所有启动代码都在 mo
我想从 PowerShell 枚举当前进程中的所有 AppDomain。该进程恰好是托管 StudioShell 的 Visual Studio。 .为此,我需要实例化 CorRuntimHost,它
我关注了these能够在 .Net 框架代码中进行调试的步骤。这对于框架的某些部分(例如 System.Drawing.dll)效果很好,但对于其他部分(clr.dll、mscoree.dll...)
我遇到了一个问题,我的 .Net 构建系统在错误的文件夹中查找其框架引用。机器上安装了.Net 4.0和Visual Studio 2010,.Net版本低于4.0的项目会出现这个问题(我的例子是.N
我想在 C/C++ 项目中加载 C# 程序集,因为 native 加载程序对我来说很酷,但 mscorlib.tlh 存在问题。首先,我正在关注代码项目 example (第一个片段)。我创建了一个空
在上一个问题中 有一个示例说明如何使用 VS 2008 创建注册表项的完整路径。前面答案中的所有内容都正常工作,除了我为 mscoree.dll 设置的完整路径(使用 VS 中的注册表编辑器)不起作用
我是一名优秀的程序员,十分优秀!