Specify the search path for DllImport in .NET

Is there a way to specify the paths to be searched for a given assembly that is imported with DllImport? [DllImport("MyDll.dll")] static extern void Func(); This will search for the dll in the app dir and in the PATH environment variable. But at times the dll will be placed elsewhere. Can this information be specified in app.config or manifest file to avoid dynamic loading and dynamic invocat

在.NET中指定DllImport的搜索路径

有没有一种方法可以指定要用DllImport导入的给定组件的搜索路径? [DllImport("MyDll.dll")] static extern void Func(); 这将在应用程序目录和PATH环境变量中搜索dll。 但有时DLL会放在其他地方。 这些信息是否可以在app.config或manifest文件中指定,以避免动态加载和动态调用? 在第一次调用导入的函数之前,请使用附加的DLL路径调用SetDllDirectory 。 P /调用签名: [DllImport("kernel32.dll", SetLastError = tru

BadImageFormatException when using native DLLs from ASP.NET

Hi Iam referencing in my ASP.NET application a managed C++ project which makes use of a native dll named "libmmd.dll". If I run the ASP.NET application with visual studio I get an BadImageFormatException which tells me "The module was expected to contain an assembly manifest" (translated from german). What is the preferred way to include native dlls into asp.net projects?

BadImageFormatException从ASP.NET使用本机DLL时

嗨Iam在我的ASP.NET应用程序中引用一个托管C ++项目,该项目使用名为“libmmd.dll”的本机DLL。 如果我用visual studio运行ASP.NET应用程序,我会得到一个BadImageFormatException,它告诉我“模块需要包含程序集清单”(德语翻译)。 将本地dll包含到asp.net项目中的首选方式是什么? 在哪个目录中搜索? 在“C: WINDOWS Microsoft.NET Framework v2.0.50727 Temporary ASP.NET Files”路径中,似乎只有托管程序集,而不是

How can I call a .NET DLL from an Inno Setup script?

I want to call a function from a .NET DLL (coded in C#) from an Inno Setup script. I have: marked the Register for COM interop option in the project properties, changed the ComVisible setting in the AssemblyInfo.cs file, added these lines to the ISS script: [Files] Source: c:temp1MyDLL.dll; Flags: dontcopy [Code] function MyFunction(): string; external 'MyFunction@files:MyD

如何从Inno Setup脚本调用.NET DLL?

我想从Inno Setup脚本中调用.NET DLL(用C#编码)的函数。 我有: 在项目属性中标记了“注册COM互操作”选项, 更改AssemblyInfo.cs文件中的ComVisible设置, 将这些行添加到ISS脚本中: [文件] 源:c: temp 1 MyDLL.dll; 标志:dontcopy [码] 函数MyFunction():string; 外部'MyFunction @文件:MyDLL.dll stdcall setuponly'; 但我仍然收到以下错误: 运行时错误(在-1:0): 无法导入d

Unable to Find an Entry Point (cpp)

This is a similar question to this one. I want to export a simple function from C++, to be called by C# via PInvoke. This is my function definition: int fnValue() { return 42; } And this is the export definition in .h file: __declspec(dllexport) int fnValue(); This is how I PInvoke the function: [DllImport("WhatDll.dll")] public static extern int fnValue(); Simple, right?

无法找到入口点(cpp)

这是与此类似的问题。 我想从C ++中导出一个简单的函数,由C#通过PInvoke调用。 这是我的函数定义: int fnValue() { return 42; } 这是.h文件中的导出定义: __declspec(dllexport) int fnValue(); 这是我如何PInvoke功能: [DllImport("WhatDll.dll")] public static extern int fnValue(); 很简单,对吧? 但我得到了一个 System.EntryPointNotFoundException:无法在DLL“WhatDll.dll”中找到名为&

How to P/Invoke to a native dll from Metro?

I've got a library consisting of two parts - One .net assembly that P/Invokes to a native 3rd party dll. In desktop mode this works just fine: However, when referencing the assembly from a Metro style app and running it, it throws a System.DllNotFoundException on the P/Invoke complaining that "Unable to load DLL 'library': The specified module could not be found." The nat

如何P /从地铁调用到本机DLL?

我有一个库,由两部分组成 - 一个.net程序集,P /调用本地第三方DLL。 在桌面模式下,工作得很好:但是,当从Metro风格的应用程序中引用程序集并运行它时,它会在P / Invoke上抛出System.DllNotFoundException ,抱怨“无法加载DLL库”:指定的模块无法被发现。” 本机dll没有做任何特别的事情,但只创建了到服务器的TCP / IP连接。 系统无法知道这一点,而是本地DLL可以做任何事情。 这就是为什么我怀疑它可能无法做到这一点

DLLImport failing to load DLL

I have code to call a DLL that is written in C. This code works fine on developer machine where we have Windows7. But it fails on Kiosk where we have Windows Embedded Standard OS with following exception :"Unable to load DLL 'xxx.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)". My DLL is in my working directory just as it was before. My p

DLLImport无法加载DLL

我有代码来调用用C编写的DLL。此代码在我们拥有Windows7的开发人员计算机上工作正常。 但是它在我们拥有Windows Embedded Standard OS的Kiosk上出现以下异常:“无法加载DLL'xxx.dll':指定的模块找不到(来自HRESULT的异常:0x8007007E)”。 我的DLL和我以前一样在我的工作目录中。 我的项目设置没有改变,工作目录被正确指定。 我尝试用从Kernel.DLL导出的函数设置“DllImport”路径,但它无能为力。 有什么可以改

How to stop certain assemblies from being loaded from the GAC?

I have some third party assemblies installed in the GAC. I am developing an ASP.NET which uses some of these assemblies. In the development machine if an assembly is not in the bin folder it gets loaded from the GAC. This situation masks the situation if an assembly is missing in the bin folder because no errors are reported. However when the app is deployed on a shared host, if an assembly i

如何阻止从GAC加载某些程序集?

我在GAC中安装了一些第三方程序集。 我正在开发一个使用其中一些程序集的ASP.NET。 在开发机器中,如果程序集不在bin文件夹中,它将从GAC加载。 如果由于未报告错误而导致bin文件夹中缺少程序集,则会出现这种情况。 但是,当应用程序部署在共享主机上时,如果bin文件夹中缺少程序集,则应用程序错误。 有没有办法强制应用程序不从GAC加载某些程序集,并在开发机器的bin文件夹中缺少它时报告错误? 据我所知,你不能。

Where are assemblies in .NET physically located?

I am a little confused about where .NET assemblies are physically located. Take good old LINQ. In my web.config file it says: <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> This is the reference to LINQ. But where exactly is the DLL this refers to located? There isn't any path in the above and it's not in my bin folder.

.NET中的程序集位于物理位置?

我对.NET程序集的物理位置有点困惑。 采取好的旧LINQ。 在我的web.config文件中说: <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 这是对LINQ的参考。 但是,这个DLL所指的位置究竟在哪里? 上面没有任何路径,它不在我的bin文件夹中。 我也有我认为是第三方装配参考: <add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, Pu

Favorite Visual Studio keyboard shortcuts

What is your favorite Visual Studio keyboard shortcut? I'm always up for leaving my hands on the keyboard and away from the mouse! One per answer please. Ctrl + - and the opposite Ctrl + Shift + -. Move cursor back (or forwards) to the last place it was. No more scrolling back or PgUp/PgDown to find out where you were. This switches open windows in Visual Studio: Ctrl + tab and th

最喜欢的Visual Studio键盘快捷键

你最喜欢的Visual Studio键盘快捷键是什么? 我总是把手放在键盘上,远离鼠标! 请每个答案一个 。 Ctrl + - 和相反的Ctrl + Shift + - 。 将光标移回(或转发)到最后一个地方。 没有更多的滚动回来或PgUp / PgDown找出你在哪里。 这会在Visual Studio中切换打开的窗口: Ctrl +标签和相反​​的Ctrl + Shift +标签 对于我来说,自动完成代码,匹配括号或显示一些奇特的工具面板没有任何关系。 相反,这只是让我

Design pattern for a database application that must work disconnected

I have to design an application is mostly an interface with a database for data entry. The application must be able to work while it is disconnected from the database with cached data and insert that data when it has connection again. There will be two different modes, connected or disconnected, no need to detect disconnection in the middle of a connected session to switch to disconnected. As

数据库应用程序的设计模式必须断开连接

我必须设计一个应用程序,大多是一个用于数据输入的数据库接口。 应用程序必须能够使用缓存数据从数据库断开连接,并在再次连接时插入该数据。 会有两种不同的模式,连接或断开连接,不需要在连接会话的中间检测断开以切换到断开连接。 因为这在我看来是一个共同的必要条件,我想知道是否有一个“标准”的方法来面对这个问题。 将表格缓存到本地文件,序列化查询到数据库的数据或其他内容。 也许有这样一个存在的图书馆?