标签: managed

是否可以在C#和非托管C++之间共享枚举声明?

有没有办法在本机(非托管)C++和(托管)C#之间共享枚举定义?

我在完全非托管代码中使用了以下枚举:

enum MyEnum { myVal1, myVal2 };
Run Code Online (Sandbox Code Playgroud)

我们的应用程序有时使用托管组件.该C#组件通过托管C++ interop dll(来自本机dll)获取枚举项值为int.(只有在需要C#组件时才会加载interop dll.)C#组件重复了枚举定义:

public enum MyEnum { myVal1, myVal2 };
Run Code Online (Sandbox Code Playgroud)

有没有办法消除重复,而无需将原生C++ DLL转换为托管dll?

c# c++ enums native managed

18
推荐指数
2
解决办法
1万
查看次数

此DLL是托管还是非托管?

我在你面前拿着一个DLL.仅使用Win32 SDK,您能告诉我这个DLL是否是.NET程序集吗?

为什么?我们的应用程序以DLL的形式加载插件.我们正在尝试扩展这些插件的定义以允许.NET程序集,但接口将是不同的,因此加载器将需要知道DLL在加载之前是管理还是非管理.

.net dll assemblies unmanaged managed

18
推荐指数
3
解决办法
1万
查看次数

在保留一些堆信息的同时减少托管程序的小型数据库的大小?

通过.NET 4.0中的转储调试支持,我们自动调查(当然询问用户:)创建C#程序崩溃的小型转储以将它们上传到我们的问题跟踪系统(以便minidumps可以帮助解决原因崩溃).

使用WithFullMemory minidump类型时,一切正常.我们可以看到堆栈和堆变量.不幸的是,即使对于小型C#程序,(zipped)转储也非常大.

如果我们使用"Normal"minidump类型,我们会得到一个非常小的转储,但托管调试器中甚至没有堆栈变量信息.事实上,任何比WithFullMemory更少的东西在托管调试器中似乎都没用.我们已经尝试过使用MINIDUMP_CALLBACK_ROUTINE将包含的模块信息限制到我们自己的模块,但它似乎对托管转储几乎没有影响,但仍设法破坏托管调试?

有没有人有关于如何修剪minidump同时保持其对托管调试有用的任何提示?

debugging minidump managed minidumpwritedump c#-4.0

17
推荐指数
1
解决办法
1248
查看次数

非请求范围Bean中的@ManagedProperty(value ="#{param.id}")

我需要将参数(POST)传递给@managedBean,我使用了这样的托管属性:

@ManagedProperty(value = "#{param.id}")
private int id;
Run Code Online (Sandbox Code Playgroud)

Bean的范围是ViewScope

我最终得到了这个错误:

无法创建托管bean收据.发现了以下问题: - 表达式#{param.id},request引用的对象的范围比引用的托管bean范围短

我能做什么?

arjan看看:

我的页面:Facelet Title

<form method="post" action="faces/index.xhtml">
  <input name="id" value="4" />
  <input type="submit" value="submit" />
</form>

<h:form>
  <h:commandLink value="click" action="index">
    <f:param id="id" name="id" value="20"/>
  </h:commandLink>
</h:form>
Run Code Online (Sandbox Code Playgroud)

java jsf managed javabeans jsf-2

17
推荐指数
2
解决办法
3万
查看次数

使用哪一个:托管与非托管哈希算法

在常规的C#应用​​程序中,哪个类用于散列:xxxManagedxxx(即SHA1Managedvs SHA1)以及为什么?

c# hash unmanaged managed

17
推荐指数
2
解决办法
6562
查看次数

JSF Managed Bean自动创建?

是否可以自动创建JSF托管bean?

例如,我有几个会话范围的bean.有时需要在代码中访问这些实例(而不仅仅是在JSF中),这可以通过以下方式完成:

PageBean pageBean = (PageBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("pages");
Run Code Online (Sandbox Code Playgroud)

但是,如果没有访问过调用'#{pages}'的页面,那么这会解析为null ...无论如何都要让JSF在范围'开始'时创建一个bean?那么在这种情况下理想情况下,当用户会话开始时,'pages'会立即在会话中实例化bean吗?

java jsf managed javabeans

16
推荐指数
1
解决办法
1万
查看次数

非非托管类型和托管类型之间有什么区别?

当我为实验目的编写以下代码段时,它引发了悬停错误(请参见屏幕截图):

无法声明指向非非托管类型的'动态'

片段:

dynamic* pointerToDynamic = &fields;
Run Code Online (Sandbox Code Playgroud)

虽然代码显然是不允许的(你不能使用托管类型的地址),但它提出了一个问题:什么是非非托管类型,它与托管类型有什么不同?或者只是Visual Studio试图搞笑?

在此输入图像描述

.net c# types unmanaged managed

16
推荐指数
1
解决办法
5100
查看次数

C++/C#解决方案中没有的任何CPU

我有一个包含C#和托管C++项目的解决方案.它在解决方案平台x64和x86中编译.由于它是托管C++,我想创建一个'Any CPU'解决方案并摆脱旧的解决方案.

我将C++项目链接器设置更改为x64和x86的强制安全IL映像.

接下来,使用Configuration Manager,我创建了一个名为"Any CPU"的新解决方案平台.接下来我添加了一个名为"Any CPU"的项目平台.

我继续将所有C#项目设置为"任何CPU",但对于C++我不能这样做.项目平台'Any CPU'不在下拉列表中,也没有选项'New ...'.

VS是关于它的,所以我保持它就像它并开始构建.令我惊讶的是,结果DLL(来自C++项目)是MSIL,即使C++的平台是x64.编译x32时也是如此,生成的DLL在MSIL中.

是什么赋予了?为什么我不能将C++项目设置为"任何CPU"?

c# c++ managed anycpu

16
推荐指数
2
解决办法
9560
查看次数

启用非托管调试时不允许更改?

我收到了错误

启用非托管调试时不允许更改

实际上我收到以下消息,但谷歌没有返回很多结果

启用非托管调试时,不允许更改

这是什么意思?我如何解决它?请注意,这是一个ASP.NET项目.选中"编辑并继续"不会使此错误消失.

asp.net debugging managed

15
推荐指数
2
解决办法
1万
查看次数

使用托管代码包装器从64位托管代码调用32位非托管代码的最佳方法

我需要从托管的64位进程调用本机32位代码的情况越来越频繁,因为64位计算机和应用程序变得普遍.我不想将我的applciation标记为32位,我无法获得正在调用的64位版本的代码.

我目前使用的解决方案是创建C++ COM填充程序,这些填充程序在进程外加载以从64位进程进行32位调用.

这个COM填充程序解决方案运行良好,跨进程调用由COM在幕后处理,这最大限度地减少了这种方法的开销.

但是,我想保留我们使用C#进行的所有新开发,并想知道是否有任何框架可以最大限度地减少执行此操作的开销.我看过IPCChannel,但我觉得这种方法并不像COM shim解决方案那样整洁.

谢谢,艾德

.net c# managed 32bit-64bit

14
推荐指数
2
解决办法
4908
查看次数