草庐IT

dll-injection

全部标签

c# - 如何从 VBScript 调用 C# DLL 函数

我的脚本在服务器上,所以我没有可用的UI交互,必须使用DLL而不是控制台应用程序。如何从VBScript调用C#DLL中的函数?如何使我的DLL成为COMVisible?我必须注册吗? 最佳答案 您需要通过设置COMVisibleAttribute将程序集标记为COM可见为真(如果您只想公开一种类型,则在程序集级别或类级别)。接下来注册它:regasm/codebaseMyAssembly.dll最后从VBScript中调用它:dimmyObjSetmyObj=CreateObject("MyNamespace.MyObject")

c# - 引用 DLL 未在 Visual Studio 2010 中加载

我正在VS2010中开发C#4.0项目,需要使用一些较旧的DLL,其中包含在VS2008上的C#3.5中创建的控件。当我第一次将DLL添加到引用时,我能够通过智能感知看到命名空间并创建其中一个控件的实例,但是当我去构建时,它给了我以下错误:Thetypeornamespacename'BCA'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)而且我确实已经为该命名空间设置了一个using指令,它现在带有红色下划线,表明VS无法找到它。现在,智能感知根本不会选择该namespace。我什至尝试将控件添加到

c# - 基类中的构造函数依赖注入(inject)

我正在使用EntityFramework构建一个存储库基类,其中所有实体存储库都将继承。我想使用Ninject使用依赖注入(inject)将DatabaseContext注入(inject)基类。我认为构造函数注入(inject)是正确的方法,但是在派生类中使用构造函数注入(inject)来执行此操作我将必须将参数传递给基类中的构造函数,但我不希望这样做。因此,Setter注入(inject)更合适?这是我的代码:publicabstractclassBaseRepository:IDisposablewhereTEntity:class{privatereadonlyDatabase

c# - 在 C# 中绑定(bind) C++ dll 时出现 EntryPointNotFoundException

我尝试绑定(bind)一个简单的c++dll,如http://msdn.microsoft.com/en-us/library/ms235636.aspx所示。在我的c#控制台应用程序中,但我在运行时在dll中添加了一个EntryPointNotFoundException。我的测试类是namespaceBindingCppDllExample{publicclassBindingDllClass{[DllImport("MathFuncsDll.dll")]publicstaticexterndoubleAdd(doublea,doubleb);}publicclassProgram

c# - 为 COM DLL 创建 .NET 包装器的工具?

是否有任何开源工具可以自动为COMDLL库生成.NET包装器? 最佳答案 在.NET中使用COM对象不需要包装器。在VisualStudio中,在解决方案资源管理器中右键单击您的项目名称,然后选择“添加引用”。任何已注册的COM对象都将列在COM选项卡中。只有在将.NET程序集用作COM对象时才需要互操作包装器,而不是像您在问题中描述的那样相反。 关于c#-为COMDLL创建.NET包装器的工具?,我们在StackOverflow上找到一个类似的问题: htt

c# - 创建一个可以使用 stdcall 在 Delphi 应用程序中导入的 C# DLL - 可能吗?

我有一个程序需要为其创建一个DLL,希望是在C#中。该程序是用Delphi编写的,我有一个接口(interface)文件可以编写代码。该接口(interface)使用stdcall调用约定。是否可以创建一个符合接口(interface)的C#DLL,可以在Delphi应用程序中使用?是否有一些示例代码演示如何将C#DLL编码为stdcall接口(interface)方法? 最佳答案 这在纯C#中是不可能的,但是thisisanarticle它展示了如何将非托管导出表添加到您的C#库,然后可以在任何其他语言中使用它。请注意,对Blit

c# - "The type or namespace name ' 引用System.Xml.dll时XmlSerializer ' could not be found"错误

我已经在这上面浪费了几个小时:XmlSerializerserializer;是的,using在那里,引用在那里,我在VS2010中使用.NET4.0制作了整个解决方案,所以它不是那些东西。如果我进入对象资源管理器,我可以在正确的命名空间中找到我想要的XmlSerializer类,但是如果我尝试在我的代码文件中键入上面的行并进行编译,我会得到可怕的Thetypeornamespacename'XmlSerializer'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)死亡警告。我也没有在Intelli

c# - 我应该避免使用依赖注入(inject)和 IoC 吗?

在我的中型项目中,我为存储库、服务等使用了静态类,它实际上工作得很好,即使大多数程序员的期望相反。我的代码库非常紧凑、干净且易于理解。现在我尝试重写所有内容并使用IoC(控制反转),但我非常失望。我必须在每个类、Controller等中手动初始化许多依赖项,为接口(interface)添加更多项目等等。我真的没有看到我的项目有任何好处,而且似乎它造成的问题多于解决的问题。我在IoC/DI中发现了以下缺点:更大的代码量馄饨代码而不是意大利面条代码性能较慢,即使我要调用的方法只有一个依赖项,也需要在构造函数中初始化所有依赖项不使用IDE时更难理解一些错误被推送到运行时添加额外的依赖(DI框

c# - 如何保护此函数免受 SQL 注入(inject)?

publicstaticboolTruncateTable(stringdbAlias,stringtableName){stringsqlStatement=string.Format("TRUNCATETABLE{0}",tableName);returnExecuteNonQuery(dbAlias,sqlStatement)>0;} 最佳答案 对抗SQL注入(inject)的最常见建议是使用SQL查询参数(此线程中的几个人都建议过)。在这种情况下这是错误的答案。不能在DDL语句中使用SQL查询参数作为表名。SQL查询参数只能

c# - 使用 Unity 注入(inject)数组

我的目标是构造函数注入(inject)一组实现接口(interface)的对象。以下是我目前的方式。Container.RegisterInstance(ParseCompany(args[1]).RegisterInstance(ParseTargets(args[2])).RegisterInstance(newILoader[]{Container.Resolve(),Container.Resolve以这种方式在容器配置中调用Resolve是典型的还是有更标准的方式来完成同样的事情? 最佳答案 Unity天生就理解数组,因此