除非安装了Visual Studio,否则无法使用C ++ / CLI DLL

比绍伊

介绍

我正在开发一个可以解释和使用API​​蓝图的工具。

我创建了一个新的控制台应用程序,添加了SnowCrash.NET nuget包并编写了以下代码:

    static void Main(string[] args)
    {
        snowcrashCLR.Blueprint blueprint;
        snowcrashCLR.Result result;

        var path = args.Length > 1 ? args[1] : @"c:\";

        snowcrashCLR.SnowCrashCLR.parse(path, out blueprint, out result);
        if (result != null)
        {
            var warnings = result.GetWarningsCs();
            foreach (var warning in warnings)
            {
                Console.WriteLine("{0}: {1}", warning.code, warning.message);
            }
        }
    }

问题

当我将代码(复制到bin文件夹中)部署到与开发环境不同的计算机上时,我得到一个FileNotFoundException指向SnowCrash.dll

这是错误消息中的快照商店:

无法加载文件或程序集“ snowcrashCLR.DLL”或其依赖项之一。指定的模块无法找到。

细节:

[FileNotFoundException: Could not load file or assembly 'snowcrashCLR.DLL' or one of its dependencies. The specified module could not be found.]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
   System.Reflection.Assembly.Load(String assemblyString) +28

到目前为止我尝试过的

  • 我在两台机器上都使用了sysinternal procmon进行比较,看起来我的开发机器(运行良好)正在加载此DLL:

加载映像C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.VisualC.STLCLR \ v4.0_2.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualC.STLCLR.dll

  • 应用运行良好的我的计算机已安装了这些运行时
MS Visual C++ 2005 Redist (x64)
MS Visual C++ 2008 Redist (x64) 9.0.30729.4148
MS Visual C++ 2008 Redist (x64) 9.0.30729.6161
MS Visual C++ 2008 Redist (x86) 9.0.30729.4148
MS Visual C++ 2008 Redist (x86) 9.0.30729.6161
MS Visual C++ 2010 x64 Redist - 10.0.40219
MS Visual C++ 2013 x64 Redist - 12.0.30501
MS Visual C++ 2013 x86 Redist - 12.0.30501
  • 在出现错误(未运行)的计算机上,我安装了与上面相同的运行时列表,但是并没有解决问题或无法正常工作。

  • 我在该计算机上安装了Visual Studio,该计算机以前无法运行,当我尝试我的应用程序后它可以正常工作

如果您对类似问题有更好的了解或与之抗衡,将非常感谢您的帮助。

比绍伊

通过在网络之间进行大量挖掘,我发现SnowCrash DLL运行时需要缺少依赖项,该依赖项是Visual C ++运行时2012 x86。

由于它是混合的(托管CLR +本机)DLL,因此需要VC ++运行时附带的C ++ MFC库。并且它必须是正确的版本才能正常运行。

从此MSDN URL运行时安装到目标计算机上解决了我的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C ++ / CLI创建dll

来自分类Dev

区别:本机 DLL、UWP DLL 和 C++/CLI DLL

来自分类Dev

C ++ Cli WebClient无法在dll中工作

来自分类Dev

无法从C ++ / CLI使用自定义.dll(C#)

来自分类Dev

除非使用CApath或CAfile,否则无法验证CA证书

来自分类Dev

除非使用Firefox,否则无法访问YouTrack

来自分类Dev

Dotnet CLI命令无法运行DLL

来自分类Dev

何时/否则无法按预期工作(Microsoft Visual Studio)

来自分类Dev

如何调用C DLL函数C ++ / CLI

来自分类Dev

使用Visual Studio创建.dll

来自分类Dev

使用gacutil安装.dll

来自分类Dev

使用gacutil安装.dll

来自分类Dev

从C ++ / CLI调用C#dll时出现FileNotFoundException

来自分类Dev

除非使用in进行字符串比较,否则无法使用

来自分类Dev

无法使用CLI安装ApiGen

来自分类Dev

错误:“无法找到DLL xyz.dll!” Visual Studio 2010

来自分类Dev

部署.NET C ++ / CLI DLL的前提条件?

来自分类Dev

.net可以从内存中动态加载c ++ / cli dll吗?

来自分类Dev

在Powershell中将C ++ CLI .dll用作程序集

来自分类Dev

.net可以从内存中动态加载c ++ / cli dll吗?

来自分类Dev

无法安装 Angular CLI

来自分类Dev

无法安装 Composer Cli

来自分类Dev

除非在c:驱动器上,否则无法从cmd访问Python

来自分类Dev

在VS Code中打开JSDoc会产生“除非提供'--jsx'标志,否则无法使用JSX”

来自分类Dev

出现错误TS17004:除非提供'--jsx'标志,否则无法使用JSX

来自分类Dev

Create React App显示“除非提供'--jsx'标志,否则无法使用JSX”

来自分类Dev

如何从c#dll,c ++ / cli调用的dll返回字节数组,uint值

来自分类Dev

如何在C ++ / CLI程序和C ++ / CLI DLL之间传递字节数组?

来自分类Dev

How to Pass Byte Array Between a C++/CLI Program and a C++/CLI DLL?

Related 相关文章

  1. 1

    使用C ++ / CLI创建dll

  2. 2

    区别:本机 DLL、UWP DLL 和 C++/CLI DLL

  3. 3

    C ++ Cli WebClient无法在dll中工作

  4. 4

    无法从C ++ / CLI使用自定义.dll(C#)

  5. 5

    除非使用CApath或CAfile,否则无法验证CA证书

  6. 6

    除非使用Firefox,否则无法访问YouTrack

  7. 7

    Dotnet CLI命令无法运行DLL

  8. 8

    何时/否则无法按预期工作(Microsoft Visual Studio)

  9. 9

    如何调用C DLL函数C ++ / CLI

  10. 10

    使用Visual Studio创建.dll

  11. 11

    使用gacutil安装.dll

  12. 12

    使用gacutil安装.dll

  13. 13

    从C ++ / CLI调用C#dll时出现FileNotFoundException

  14. 14

    除非使用in进行字符串比较,否则无法使用

  15. 15

    无法使用CLI安装ApiGen

  16. 16

    错误:“无法找到DLL xyz.dll!” Visual Studio 2010

  17. 17

    部署.NET C ++ / CLI DLL的前提条件?

  18. 18

    .net可以从内存中动态加载c ++ / cli dll吗?

  19. 19

    在Powershell中将C ++ CLI .dll用作程序集

  20. 20

    .net可以从内存中动态加载c ++ / cli dll吗?

  21. 21

    无法安装 Angular CLI

  22. 22

    无法安装 Composer Cli

  23. 23

    除非在c:驱动器上,否则无法从cmd访问Python

  24. 24

    在VS Code中打开JSDoc会产生“除非提供'--jsx'标志,否则无法使用JSX”

  25. 25

    出现错误TS17004:除非提供'--jsx'标志,否则无法使用JSX

  26. 26

    Create React App显示“除非提供'--jsx'标志,否则无法使用JSX”

  27. 27

    如何从c#dll,c ++ / cli调用的dll返回字节数组,uint值

  28. 28

    如何在C ++ / CLI程序和C ++ / CLI DLL之间传递字节数组?

  29. 29

    How to Pass Byte Array Between a C++/CLI Program and a C++/CLI DLL?

热门标签

归档