草庐IT

CF_CLI_VERSION

全部标签

c# - 如何从 C# 访问 C++/CLI 中的类?

我正在用C#编写一个GUI工具来解析和显示另一个用C编写的程序的数据输出。为了解析数据,我需要知道在许多C头文件中指定的数据结构。因此,我需要将这些C头文件合并到我的C#项目中。我的问题是:1)经过一些研究,我得出结论,最好的方法是在我的解决方案中创建一个新的C++/CLI项目,将C头文件导入到这个新项目中,编写一些充当瘦包装器的C++/CLI类对于C头文件中定义的数据结构,然后从C#代码中引用C++/CLI包装器类。这是最好的方法,还是有更好的方法?2)我遇到了一个引用问题。这是我用来说明问题的简化代码:C++/CLI项目中的原始C头文件#defineABC0x12345C++/CL

c++-cli - C++/CLI-问题: Is there an equivalent to the C# "is" keyword or do I have to use reflection?

我在MSDN的某个地方读到过,与C#的“is”关键字等效的是dynamic_cast,但这并不完全等效:它不适用于值类型或泛型参数。例如在C#中我可以写:voidMyGenericFunction(){objectx=...if(xisT)...;}如果我尝试“等效的”C++/CLI:genericvoidMyGenericFunction(){objectx=...if(dynamic_cast(x))...;}我收到编译器错误“errorC2682:cannotuse'dynamic_cast'toconvertfrom'System::Object^'to'T'”。我唯一能想到的

c# - 项目 X 的​​目标是 '.NETStandard,Version=v1.6' 。它不能被以 '.NETFramework,Version=v4.6.1' 为目标的项目引用

我真的很想成为一个好公民...将我所有的类(class)复制到.net标准1.6库中。只是为了发现我的测试DLL不能使用它。我收到以下错误ProjectXtargets'.NETStandard,Version=v1.6'.Itcannotbereferencedbyaprojectthattargets'.NETFramework,Version=v4.6.1'.当然,当我检查.NetStandard(https://learn.microsoft.com/en-us/dotnet/articles/standard/library)时,它说1.6可以针对4.6.1。我尝试了4.6.

c# - 如何在 C# 应用程序中使用 C++/CLI

我正在尝试从我的C#应用程序(通过C++/CLI)调用我的C++库。我按照thisquestion中的示例进行操作(针对我的具体应用)。我的应用程序的设置是:项目1:C++项目(我将其编译为DLL)项目2:C++项目(我的CLR包装器;只是上面示例的头文件;引用项目1)项目3:C#项目(引用项目2)不幸的是,当我实际去访问我的C#应用程序中的CLR包装器对象时,我收到以下错误:Thetypeornamespacename'YourClass'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)是我的项目设

c# - 如何在 c# .net CF 3.5 中使用 XmlDocument 向 xml 添加属性

我需要为元素“aaa”创建一个前缀为“xx”的属性“abc”。以下代码添加了前缀,但它也将namespaceUri添加到元素。要求的输出:我的代码:XmlNodenode=doc.SelectSingleNode("//mybody");XmlElementele=doc.CreateElement("aaa");XmlAttributenewAttribute=doc.CreateAttribute("xx","abc",namespace);newAttribute.Value="ddd";ele.Attributes.Append(newAttribute);node.Inser

c# - C# 编译器和 C++/CLI 编译器的输出之间的差异

我有一个WPF应用程序,它在大型数据集之间进行大量匹配,目前它使用C#和LINQ来匹配POCO并在网格中显示。随着包含的数据集数量和数据量的增加,我被要求查看性能问题。我今晚测试的假设之一是,如果我们将一些代码转换为C++CLI,是否会有实质性差异。为此,我编写了一个简单的测试来创建一个List有5,000,000个项目,然后做一些简单的匹配。基本的对象结构是:publicclassCsClassWithProps{publicCsClassWithProps(){CreateDate=DateTime.Now;}publiclongId{get;set;}publicstringNa

c# - 托管 C++ (C++/CLI) 与 C#/VB.NET

我广泛使用C#,但是,我正在开始一个项目,我们的客户希望所有代码都用C++而不是C#编写。该项目将是托管(.NET4.0)和nativeC++的混合体。由于我总是更喜欢C#而不是C++来满足我的.NET需求,我想知道在使用C#和托管C++之间是否存在我可能没有意识到的重要区别?非常感谢任何对此的见解。编辑查看维基百科的托管C++代码表明新规范是C++/CLI,并且“托管C++”已弃用。更新标题以反射(reflect)这一点。 最佳答案 C++/CLI是一种成熟的.NET语言,就像其他.NET语言一样,它在托管上下文中运行良好。正如在

c# - C++/CLI 比 C# 快吗

C++/CLI比C#快吗?在哪种类型的操作中速度更快? 最佳答案 不一定。但是,C++/CLI消除了C#中存在的非性能处理方式的大部分语法糖分(例如装箱)。此外,C++/CLI允许您与非托管代码进行更干净的互操作,实际上允许您混合托管/非托管代码,这是一个性能关键环境可能是有益的。编辑:有关一些差异,请参阅此帖子:http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx 关于c#-C++/CLI比C#快吗,我们在StackO

c# - 程序集 'SomeAssembly, uses ' System.Web.Mvc,Version=4.0.0.0,其版本高于引用的程序集 'System.Web.Mvc,Version 3.0.0.0

在VS2012RTM中打开并编译我的VS2010.net4.0MVC3项目后,出现以下错误。如何在不升级到MVC4的情况下解决此问题?我同时安装了VS2010和VS2012。Error1Assembly'SomeAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'uses'System.Web.Mvc,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'whichhasahigherversionthanreferencedassembly'

c# - '无法加载文件或程序集 'netstandard, Version=2.0.0.0, ...'。不应加载引用程序集以执行

目标:从.NET4.7控制台应用程序,通过Assembly.GetType()使用反射,我尝试从AssemblyX中提取netstandard2.0类的类型。然后我想使用Activator.CreateInstance()创建该类型的实例。我正在尝试做的事情:但是,此程序集X依赖于netstandard2.0。为了能够获取类型,必须将netstandard依赖项加载到AppDomain中。这就是为什么当AppDomain通过AssemblyResolve事件请求netstandard程序集时,我只是像这样加载dll:varnetStandardDllPath=@"C:\Users\xx