标签: interop

无法加载文件或程序集'Microsoft.mshtml ...强名称验证失败

我制作了一个WPF/C#程序,我使用互联网控件进行所见即所得的HTML编辑.

它是一个常规的可执行程序.

它适用于大多数计算机,但有些计算机给我以下错误.

无法加载文件或程序集'Microsoft.mshtml,Version = 7.0.3300.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.强名称验证失败.

"Microsoft.mshtml.dll"文件随程序一起分发.它与exe文件位于同一文件夹中的所有其他必需的dll.


这是输出 Fuslogvw

*** Assembly Binder Log Entry  (1/14/2010 @ 6:36:51 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  C:\Documents and Settings\office\Desktop\Database\DATABASE.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = CAMPUSREMOTE\office
LOG: DisplayName = Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/office/Desktop/Database/
LOG: Initial …
Run Code Online (Sandbox Code Playgroud)

c# interop mshtml

18
推荐指数
2
解决办法
5万
查看次数

AxInterop和Interop有什么区别?

我在VS中的工具箱中添加了一个.ocx.创建了两个.dll:Interop.NNN.dll,AxInterop.NNN.dll.

每个人是什么?它们都是必需的吗?

.net com interop activex ocx

18
推荐指数
2
解决办法
2万
查看次数

为什么在.NET 4和3.5之间处理来自CloseHandle的异常?

我遇到的情况CloseHandle是,SEHException在调试器下运行时,PInvoke调用将在.NET 4应用程序中抛出.与其他遇到类似问题从3.5迁移到4的问题不同,我并没有特别担心这种行为,并且已经找到了问题(第三方库CloseHandle在同一个句柄上调用了两次).但是,我很困惑为什么在.NET 3.5应用程序中不会发生这种行为.

以下小但完整的示例演示了我遇到的行为(在XP SP3和Win 7 x64上测试,总是编译为x86):

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var hFileMapping = CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 0x04 /* read write */, 0, 0x1000, null);
            CloseHandle(hFileMapping);
            CloseHandle(hFileMapping);
            Console.WriteLine("No exception");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }

        Console.ReadKey();
    }

    [DllImport("kernel32", SetLastError = true)]
    static extern IntPtr CreateFileMapping(IntPtr hFile, IntPtr lpAttributes, int flProtect, int dwMaximumSizeHigh, int dwMaximumSizeLow, string lpName);

    [DllImport("kernel32", SetLastError = true)]
    static extern bool CloseHandle(IntPtr handle); …
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke winapi interop

18
推荐指数
1
解决办法
2970
查看次数

使C#.NET中的IntPtr指向字符串值

我正在使用一个具有StringHandle字段的类,该字段IntPtr表示LPCWSTR在C++中的值 .

internal IntPtr StringHandle; // LPCWSTR
Run Code Online (Sandbox Code Playgroud)

现在说我有一个字符串: string x = "abcdefg"

如何使用String句柄指向String的开头,以便它像C++ LPCWSTR?

.net c# interop pointers

18
推荐指数
2
解决办法
2万
查看次数

在同一个应用程序中组合Lisp和PHP代码

目前我使用PHP几乎所有我为Web开发的东西,但它的语言限制开始让我恼火.但是,当我开发一些实践并维护一些对我有帮助的PHP库时,我觉得我不准备只是切换到LISP丢弃我所有的PHP输出.在我可以访问的所有服务器上,它甚至可能是不可能的常规LAMP主机帐户.

我的问题是:LISP代码可以与PHP结合使用吗?是否有针对并行LISP/PHP的解决方案,用于互操作性的接口或perphaps只是针对另一个的实现?或者它是一个互相排斥的选择?

php lisp interop web-applications

17
推荐指数
2
解决办法
3398
查看次数

从非托管代码调用托管代码

我想从非托管C++调用我的.NET代码.我的进程入口点是基于.NET的,所以我不必担心托管CLR.我知道可以使用.NET包装器来完成.NET对象,但是我想访问托管类的各个静态方法,因此COM不是我最短/最简单的路径.

谢谢!

.net clr interop unmanaged

17
推荐指数
3
解决办法
3万
查看次数

Visual Studio 2010,TlbImp在2.0项目中生成.net 4.0 interops

在C#项目中,我们通过Add References设置添加对COM对象的引用,该设置指向COM对象,这导致IDE自动生成interop程序集.所以这很好,但我们正在构建基于.net 3.5 SP1又称CLR 2.0,并且生成的互操作使用4.0 CLR使它们不兼容.有办法防止这种情况吗?

我假设另一个选项是配置我们的构建脚本尝试使用带有/ references参数的tlbimp.exe吗?指向mscorlib v2.0?

无论如何,我希望有一个标志允许这个.

interop visual-studio-2010 tlbimp

17
推荐指数
3
解决办法
2万
查看次数

使用Office PIA时System.Type.Missing或System.Reflection.Missing.Value?

我搜索了这些SO结果,找不到与我的问题有关的任何内容.我怀疑这可能是重复的.

我目前正在.NET C#3.5中编写一个Microsoft.Office.Interop.Excel PIA包装器,并且想知道在调用打开给定工作簿等方法时最好使用什么.

System.Type.Missing还是Missing.Value

我已经执行了一些Google搜索,但找不到任何区别,除了一个来自System命名空间(System.Type.Missing),另一个(Missing.Value)来自System.Reflection命名空间.

  1. 两者之间的主要区别是什么?
  2. 在哪种情况下最好使用另一种?
  3. 为什么会这样?

当你想将参数的默认值传递给互操作程序集时,似乎都使用了这两个...

谢谢你的回答!=)

.net c# interop system.type

17
推荐指数
1
解决办法
7153
查看次数

哪些阻塞操作导致STA线程泵送COM消息?

当一个COM对象在STA线程上实例化时,该线程通常必须实现一个消息泵,以便为来回调用其他线程(见这里).

可以手动泵送消息,或者依赖于某些(但不是全部)线程阻塞操作在等待时自动泵送COM相关消息的事实.文档通常无助于决定哪个是哪个(参见相关问题).

如何确定线程阻塞操作是否会在STA上泵送COM消息?

到目前为止的部分清单:

阻断其业务泵*:

阻止泵送的操作:

*注意Noseratio的答案说,即使是操作泵,也是为非常有限的未公开的COM特定消息集.

c# com interop message-pump

17
推荐指数
1
解决办法
3534
查看次数

C NULL是否等于C++ 11 nullptr

我喜欢使用nullptr而不是NULL.现在我调用一个C函数(libjansson在本例中).

NULL在C中是实现定义的.

因为nullptr我发现"空指针常量是整数类型的整数常量表达式(5.19)rvalue,其值为零".

所以最安全的事情是:

auto string_obj=json_object_get(m_handle,name);
if(string_obj!=NULL)
    {
    auto string=json_string_value(string_obj);
    if(string!=NULL)
        {return string;}
    }
return nullptr;
Run Code Online (Sandbox Code Playgroud)

我真的需要它还是可以更简单地做到这一点:

auto string_obj=json_object_get(m_handle,name);
if(string_obj!=nullptr)
    {
    return json_string_value(string_obj); //Assume there is no difference between C NULL and C++11 nullptr
    }
return nullptr;
Run Code Online (Sandbox Code Playgroud)

c null interop c++11

17
推荐指数
1
解决办法
2万
查看次数