草庐IT

c# - 属性或注释的酷用途(CLR 或 Java)?

您做过或听说过哪些用于CLR/C#代码中的自定义属性的很酷的应用程序?标准属性的有趣新用途也可以!编辑:由于Java的注释似乎与CLR的属性相同,因此使用Java注释也是有效的。 最佳答案 postsharp,它使用属性注入(inject)代码(AOP)?[TypeDescriptionProvider]可用于提供自定义运行时属性模型-完全不同的属性,或者可能是fasterones还有一些经常被忽视的核心:[TypeForwardedTo]-用于在不重新构建的情况下在程序集之间移动类型[PrincipalPermission]-用于

c# - 将 .lib 和 .h 文件转换为 .NET

一家经纪公司有一个围绕C++构建的API,作为库和头文件提供给用户使用(订单、价格、新闻等),长话短说,我只有C#的实用知识,并且想制作使用一些包装技术来利用通过将它们转换为托管DLL提供的.lib和.h文件。有没有一种方法可以在不参与大量C++编码/包装的情况下做到这一点? 最佳答案 您可以使用C++/CLI。试试startsfromhere.基本上我会创建一个C++/CLI包装器,以便向c#公开一组明智的功能。无论如何,这不是一件容易的事。另一种方法是用纯C++编写一些外部“C”入口点到库并使用P/Invoke访问该api。

.net - 在混合模式 C++ 项目中从 CLR 到 SEH 异常获取敏感信息

混合模式C++项目。native代码正在调用托管代码。托管代码可能会引发异常。我可以使用vector异常处理程序在native模式下捕获所述异常;我可以看到它的PEXCEPTION_POINTERS。告诉代码0xE0434F4D,意味着它是一个CLR异常,就在那里。问题:有什么方法可以从伴随数据中获取任何有意义的信息(异常类、消息、堆栈跟踪等)?ExceptionInformation中有一个参数,它看起来像是指向某物的指针... 最佳答案 不,太晚了。您得到的只是异常代码。如果原始托管异常是由处理器故障引起的,您可能会在Excep

c++ - 将 MFC/ATL 代码转换为 Windows 窗体应用程序

我有大量的MFC/ATL程序代码,想在Windows窗体应用程序中使用。“转换”此代码的最简单方法是什么,以便它在启用/clr的情况下进行编译并找到基本类,例如CObject、CString、CFile和模板? 最佳答案 不需要做太多的“转换”,您只需启用/clr并编译即可。会有构建错误,但数量不会很大。这是一个不应该轻易做出的决定。不。一旦你越过/clr阈值,你就牺牲了一些东西:构建性能变得更差,尤其是链接。您不能增量链接C++/clr项目。一个额外的加载层被添加到您的.Exe或.Dll中。您必须注意初始化的顺序,尤其是静态的。与

c++ - 如何使用 CLR 创建一个混合了 C 和 C++ 的 Visual Studio 项目?

我正在使用VisualStudio2008将构建在Unix上的GCC上的代码移植到Windows。Windows操作系统。我的代码包含zlib,它本身包含C文件,我可以构建这些文件并将其链接到我的Unix可执行文件中。在我开始尝试构建时,遇到的第一个错误是zlib中的C代码无法使用CLR构建,因为它不是C++。我看到有人建议将其分解为一个单独的DLL,该DLL将链接到我的可执行文件中,但我想尽可能避免共享库的复杂性。(也许这种回避更复杂?)有没有办法将我的C++与zlib的C代码混合到一个带有CLR的可执行文件中?我当前的构建错误如下:1>cl:CommandlineerrorD804

c# - 在 C++ 中触发事件并在 C# 中处理它们

我有一台带有一些数字I/O引脚的工业计算机。制造商提供了一些C++库和示例来处理管脚状态变化。我需要将这些事件集成到C#应用程序中。据我所知,执行此操作的最简单方法是:为制造商库制作托管C++/CLI包装器,在DIO引脚发出中断时触发事件。引用该包装器并处理C#部分中的事件,因为它们是正常的C#事件。我曾尝试使用一些模拟对象来完成这项工作,但没有成功。从文档中,函数EventHandler应该完成我的大部分“脏工作”。按照旧线程中可用的信息和MSDN文档中的EventHandler示例,我最终得到了这个测试代码:C++/CLIusingnamespaceSystem;publicref

c++ - WinRT XAML - 托管和非托管 - 它是如何工作的?

关于新的WinRTAPI和以它为目标的语言(直接或间接)以及它们与XAML的关系,我不明白。.NET语言(C#、VB.Net、F#)可用于构建XAMLMetro在“受API限制”的CLR上运行的应用程序又在WinRT上运行C++可用于构建直接在WinRTAPI的顶部我的问题是-方案1中的XAML是否先转换为BAML,然后转换为MSIL(按照传统.NET应用程序),或者是否有新的机制?如果不是,那么构建非托管应用程序的编译器如何将相同的XAML转换为native指令?这两种情况是否使用相同的编译策略得到解决?如果是,那又如何? 最佳答案

c# - 在 C++ 中使用 C# 接口(interface)或在 C# 中使用 C++ 接口(interface)

我正在开发一个解决方案,其中我有一个必须由C++解决方案和C#解决方案使用的接口(interface)。我想知道:实现此目标的最佳方式是什么:我在C++项目中使用的C#接口(interface)我将在我的C#项目中使用的C++接口(interface)您能否指出我应该如何着手寻找最佳解决方案? 最佳答案 您是说托管C++吗?在托管C++的情况下很容易做到,只需将接口(interface)放在单独的项目(dll)中并从C#中引用它如果您想对非托管C++做同样的事情,事情会变得很困难比你需要使用COM,PInvoke或某种服务/套接字通

c++ - 构建不带/clr 选项的 dll

在visualstudio2005中如何在没有/clr选项的情况下进行编译?visualstudioprojectproperties->Configurationproperties->C/C++->CommandLine->Alloptions:此处/clr开关默认启用许多其他选项,但我无法编辑它。 最佳答案 在“常规”选项卡上的“项目属性”,您应该会看到“项目默认值”部分。将公共(public)语言运行时支持更改为不支持公共(public)语言运行时 关于c++-构建不带/clr选

c++ - 理解托管 C++

我无法理解托管C++的工作和编译方式。在.NETFramework中,您可以使用C#/VB/F#/..etc开发代码。所有这些语言都将被编译成与Java字节码类似的相同的通用中间语言(CIL)。理论上,CIL可以安装在任何平台上(Mono使其实用)。在Windows上,CLR将CIL即时编译为native代码(JIT),一切都顺利进行。现在,托管C++是如何编译的?它是否编译为CIL代码并等待CLR使用JIT运行它?我认为不是,因为托管C++可以使用标准C++代码(未编译为CIL)。此外,它如何使用.NET程序集(CIL)?如果有任何帮助,我将不胜感激。谢谢编辑:我看过这个answer