Tag: 参考

使用C#运行VBScript

我正在尝试在C#类库项目中执行用VBScript编写的脚本 using System.Web.UI; //reference added at top MSScriptControl script = new ScriptControl(); script.Language = “VBScript”; script.AddObject(“Repository”, connectToDB.GetRepository); 我收到以下编译错误: 错误CS0246:找不到类型或命名空间名称’MSScriptControl’(您是否缺少using指令或程序集引用?) 有任何想法吗?

你如何在c ++中调用ac#方法?

他们在这里和这里谈论要做什么,但我似乎无法在c ++中找到我的c#项目。 我已经在c ++项目中添加了c#项目作为参考,但每当我尝试使用我需要的方法时,它都找不到命名空间。 我通过右键单击c ++项目添加它并进入’reference’然后添加了c#项目并添加了新的引用。 两个项目都在同一个解决方案中。 在下面的代码示例中,我给出了完整的c#代码(使用除外)和c ++代码的一部分(我试图从中调用c#方法的方法)。 我还将一些命名空间更改为更通用,并且不包含敏感信息。 c#代码是这样的。 namespace Company.Pins.Bank.Decryption { public class Decrypt { [DllImport(“decryptsn.dll”, CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr decryptsn(byte[] InpData); //__declspec(dllimport) char* decryptsn(char* InpData); public static String Decryption(string param2) { byte[] InpData = new byte[255]; InpData = StrToByteArray(param2); return Marshal.PtrToStringAnsi(decryptsn(InpData)); } public static byte[] StrToByteArray(string str) { […]

在c#中列出

我无法理解List背后的逻辑,因为它打破了一些基本规则。 List应该是值类型而不是引用类型。 如果必须在函数调用之间保持其值,则必须通过ref关键字传递List 。 所以这意味着它正在显示类似于int的值类型行为。 但是List必须由new运算符初始化。 List也可以为null。 这意味着引用类型行为。 可空类型是不同的,因为它不必由新运算符初始化。 我在这看错了吗? EDITED- 我应该在原始问题中发布代码。 但它遵循 – namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ListTest d = new ListTest(); d.Test(); } } class ListTest { public void ModifyIt(List l) { l = returnList(); } public void Test() { List listIsARefType = new List(); ModifyIt(listIsARefType); […]

找不到命名空间!

我创建了一个名为Foo的解决方案。 添加了一个名为Foo.Common添加了一个控制台应用程序来调用来自ConsoleApp的库代码。 我从ConsoleApp引用了Foo.Common并输入: using Foo.Common; public class Program { CommonClass c = new CommonClass(); static void Main(string[] args) { } } 并得到这个: Error 1 The type or namespace name ‘**Foo**’ could not be found (are you missing a using directive or an assembly reference?) Z:\Foo\Solution1\ConsoleApplication1\Program.cs 3 11 ConsoleApplication1 我为什么要这个? 这是怎么回事?

命名空间“Microsoft”中不存在类型或命名空间名称“Reporting”

我只是得到以下错误: 命名空间“Microsoft”中不存在类型或命名空间名称“Reporting”(您是否缺少程序集引用?) 将此添加到我的代码后: protected global::Microsoft.Reporting.WebForms.ReportViewer ReportViewer1; 我已经看到一些解决方案,我必须添加一些程序集。 但他们都没有工作。 这是一个例子: 谁能帮我这个?

将对象的引用传递给新的Thread

我有一个包含非常大的双3D数组的对象,我需要启动一个需要该数组数据的新线程,所以我需要启动一个新的线程传递该对象(其中包含很多其他数据也是新线程或我只是将3D数组传递给新线程。 对于第一个解决方案,我只需执行以下操作: MyClass { … public double[,,] _data = new double[x,y,z]; … } MyMethod(object MyObject) { //do stuff with (MyObject as MyClass) } MyClass _newObject = new MyClass(); Thread thread = new Thread(new ParameterizedThreadStart(MyMethod)); thread.Start(_newObject); 我现在的问题是:当我将对象_newObject传递给新线程时,该对象是通过引用发送到线程还是被复制的对象和新线程使用的副本? 问题是该对象包含大约300MB的数据,如果使用副本几乎是不可能的,因为我需要启动大约需要使用该对象数据的10个线程。

不复制引用的库

我有ProjectA(WPFApplication)引用ProjectB(ClassLibrary) 。 在ProjectB内部我有wpf窗口,它使用来自ThirdParty.dll的控件,因此我从ProjectB引用。 问题是它没有在ProjectA的输出文件夹中找到ThirdParty.dll ,并且引发了xaml解析运行时exceprion。 GAC中没有ThirdParty.dll 。 “本地复制”设置为true。 如果我在ProjectA的输出文件夹中手动添加该库,它也可以工作,如果我在我的cs文件中使用了ThirdParty.dll somwhere它也可以工作。 我怎么解决这个问题?

为什么使用DllImport属性作为添加引用?

我见过几个这样的例子: [DllImport(“user32.dll”)] static extern bool TranslateMessage([In] ref Message lpMsg); [DllImport(“user32.dll”)] static extern IntPtr DispatchMessage([In] ref Message lpmsg); 但是,我不明白的是为什么有人会这样做,因为只是引用DLL就像他们做其他库一样? MSDN声明:“在托管应用程序中重用现有的非托管代码时,DllImport属性非常有用。例如,托管应用程序可能需要调用非托管WIN32 API。” 但是,是不是说引用一个非托管的dll是不行的,否则不可能?

使用不同版本的引用DLL

不知怎的,我很幸运,从来没有处理过这个问题,尽管我认为这是一个常见的问题: 我有一个网络项目,我们称之为SomeProject 。 SomeProject引用了第三方库,我们称之为SomeThirdParty ,版本1.0。 SomeProject还引用了一个本土类库,我们称之为SomeLibrary 。 SomeLibrary也有SomeLibrary的引用,但是有一个不同的版本(比方说2.0)。 SomeThirdParty 1.0和2.0 SomeThirdParty共享大多数相同的签名,但它们是不同的实现。 我需要SomeProject使用1.0实现, SomeLibrary使用2.0实现,如果可能的话。 我使用它对log4net的引用编译SomeProject 。 最终在bin目录中的DLL是SomeProject引用的DLL。 在运行时,当SomeLibrary代码运行时,它会尝试从SomeLibrary 2.0版本执行代码,当然SomeThirdParty失败,抛出FileLoadException: Could not load file or assembly ‘ SomeThirdParty , Version=2.0.0.0, Culture=[etc.]’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. etc。 , Version=2.0.0.0, Culture=[etc.]’ or one of its dependencies. The […]

引用不同配置的不同程序集

在询问之前,我读了这个和这个线程。 没有帮助。 我正在使用Visual Studio 2003(这是我的雇主强制要求的)但我想对VS的更高版本的答案也可能有用。 所以,假设我有两个.Net项目:A – 这是一个类库,B – 是一个应用程序。 在BI中单击Add Reference ,转到Projects选项卡并选择A.在这种情况下,B的调试版本将引用A的调试版本,B的发行版本将使用A的发行版本。现在想象而不是项目AI只有两个程序集 – aD.dll和a.dll。 我没有任何创建这些的项目。 我想要做的是强制执行B引用aD.dll的Debug版本,以及B引用a.dll的发行版本 问题1:我该怎么做? 当我想引用一些dll时,我去添加引用 – > 浏览并浏览我的dll。 但我需要指定的不是完整路径,而是指定相对路径。 问题2:我该怎么做? 这是一个紧急情况,在此先感谢:)