问题标签 [managed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
848 浏览

memory - DotNET 应用程序的内存使用情况

我的应用程序 (DotNET) 在 C++ 独立应用程序中作为插件运行,该应用程序公开了 C++/CLI SDK。

我的用户很容易生成大量数据,如果我的插件 + 基础应用程序的内存消耗达到法定最大值的 90%,我想提供一个中止选项。

我如何测量总内存消耗(对于托管非托管代码来说都是理想的),我如何知道当前应用程序允许多少内存窗口?

0 投票
2 回答
1981 浏览

interop - 类未注册....尝试从非托管 C++ 调用托管 C# 库时

我有一个 C# 库,用于非托管 C++ 代码中的 COM 对象。我使用 Visual Studio 的复选框“Register For Com Interop”注册了库,并将 ComVisible 设置为 true。

将 tlb 导入到 C++ 应用程序中......当我运行它时,我得到一个“未注册的类”......

这以前有效,但是在我将 C# 项目的目录移动到不同的位置后开始发生这种情况......是的,我在移动它后确实重新注册了库。

我已经从注册表中删除了所有引用...我什至尝试在其上执行 gacutil.exe /i...没有骰子。

有人知道怎么修这个东西吗?

0 投票
2 回答
1519 浏览

.net - 用于 .NET 的轻量级 x86 模拟器 / 在托管环境中执行 x86 代码

我们公司正在将其整个产品线从 C++ 代码库迁移到 .NET Framework。我们有一个非常大的代码库,并且这种迁移是在多年的过程中逐步完成的。

我们希望享受纯托管代码(例如 Silverlight)的一些好处,但是有许多遗留的 C++/x86 模块需要我们花时间才能移植到 .NET。

一种解决方案是让我们将这些模块加载到轻量级 x86 仿真器中,该仿真器在 .NET Framework 的小型内存沙箱中运行。这将允许我们调用遗留的 x86 DLL 代码,同时维护一个纯托管应用程序。

有人知道这样的项目吗?

真挚地,

0 投票
2 回答
2839 浏览

.net - 使用 WinDbg/SOS 调试 managed->native callstack。我收到“无法请求 ThreadStore”

managed.exe 中的 MyManagedFunc 调用 unmanaged.dll 中的 MyUnmanagedFunc()。我使用 Win32 在 unmanaged.dll 中生成了一个小型转储。设置未处理异常过滤器。我可以在调用堆栈中看到 MyUnmanagedFunc,但在托管端没有任何用处。

我应该能够使用 WinDbg 和 SOS.dll 来查看托管调用,对吗?下面是我的 WinDbg 会话。我究竟做错了什么?

0 投票
2 回答
920 浏览

c++ - 如何更改在托管 C++ 中通过#using 引用的 .NET 库的查找路径?

我在托管 C++ 中开发了一个 DLL,它在运行时使用System.Reflection.Assembly.LoadFile加载一些插件(以任何 .NET 语言实现)。所有插件实现的接口都是用C#实现的。托管 C++ 代码使用它,如下所示:

加载插件效果很好;我面临的问题是,在运行时,该IMyPlugnInterface.dll文件可能与托管 C++ DLL 不在同一目录中。这意味着“IMyPluginInterface”类型在运行时不可用,并引发异常。

我之前问过是否有可能影响解析通过#using语句引用的 DLL 时使用的查找路径。不幸的是,这并没有产生任何结果。

可能有不同的方法吗?可以将通过引用的类型#using编译到托管 C++ DLL 中吗?也许其他人有完全不同的解决方案?

0 投票
1 回答
589 浏览

interop - 避免在 C++/CLI 项目中加载 .Net Dlls?

我有一个用 C++/CLI 编写的项目。有些类型存在于托管代码中,有些则完全是本机代码。假设我在没有安装任何版本的 .Net 框架的机器上生成了 DLL,有没有办法让另一个本机应用程序与我的“混合模式”DLL 链接并仅使用本机类型?我注意到,在我添加“/clr”开关的那一刻,我的 Dll 自动依赖于几个 .Net Framework Dll(mscorjit、mscoree 等),当我实际尝试使用其中定义的 100% 本机类型时,应用程序仍然尝试加载那些 .Net Framework Dll(即使我没有在代码的那部分使用框架)。
那么,在这种情况下是否可以避免加载这些 Dll?(如我所见,另一种选择是创建另一个本机项目,该项目将包含所有本机类型,不包括托管类型)。

谢谢

0 投票
1 回答
1220 浏览

visual-studio-2008 - 如何在另一台工作组机器上进行远程调试?

我在 VS 2008 中多次使用“附加到进程”功能,但实际上从未在远程机器上使用过。现在我必须这样做,而且我已经在网上阅读了很多关于它的内容。在玩了一会儿之后,我已经到了一个我不太确定如何进行的地步。首先,这是我到目前为止所做的快速列表:

测试机(Win XP Pro SP3 x86):

  • 安装 Msvsmon
  • 将本地帐户的本地策略更改为“经典 - 本地用户以自己的身份进行身份验证”
  • 停用 Windows 防火墙(是的,这不是一个好主意,但可以避免任何端口问题)
  • 植入要调试的应用程序的副本,包括 pdb 文件
  • 创建了一个与我的开发机器上具有相同名称和密码的用户帐户
  • 确保新创建的帐户是 admin 并具有远程调试权限

VS 主机(Vista Home Premium x64 SP2、VS 2008 pro SP1)

  • 停用防火墙
  • 确保我可以通过 UNC 路径访问测试机(有效)

因此,网络通信有效。防火墙已关闭。Msvsmon 正在测试机器上运行。但是当我尝试通过“附加到进程”连接并输入测试机器的计算机名称时,我得到了这个(翻译自德语):

无法建立与名称为“TESTMACHINE”的 Visual Studio 远程调试监视器的连接。Visual Studio 远程调试器不支持该 Windows 版本。

过了一段时间,我才发现“不支持 Windows 版本”实际上是在说“身份验证错误”。

我什至尝试使用“没有身份验证的远程”而不是“标准”进行连接,即使它对我不起作用,因为我需要调试托管代码。所以我相应地调整了 Msvsmon 并且连接正常工作(我可以选择进程,但当然我不能真正调试)。所以这让我相信我遇到了身份验证问题。

所以最后,我的问题:

如何在两台机器上设置用户/身份验证,以便我可以远程调试同一工作组中的托管代码?

本地用户名相同,但如何允许“DEVMACHINE\me”在“me”实际上是“TESTMACHINE\me”的机器上进行远程调试?

谢谢 ;)

0 投票
3 回答
1394 浏览

c# - 带有字符串引用的 C# 委托对 c++ 回调

我编写了一个 C# 应用程序,它通过托管 c++ dll 使用非托管 c++ dll。在非托管 dll 中,有一个回调,它的参数之一是std::string&.

我似乎找不到用托管 dll 包装它的正确方法。当我使用String^时,回调有效,但 C# 应用程序在字符串中没有得到任何东西。当我使用String^%时,在其他似乎不相关的地方开始崩溃(可能是内存损坏)。

所以我的问题是,这样做的正确方法是什么?

谢谢

0 投票
2 回答
690 浏览

directx - DirectX 托管还是非托管?

我需要有关 DirectX 的基本信息。它是托管 API 还是非托管 API?有人可以给我一些链接等解释吗?

0 投票
2 回答
23318 浏览

enums - C++/CLI:从非托管枚举转换为托管枚举

从本机代码转换为包含相同值enum的托管代码(在 C++/CLI 中)的正确方法是什么?例如在 C++/CLI 中使用 C# 的转换方式有什么不同吗?enumenum(int)