gpt4 book ai didi

visual-studio-2010 - 加载 some.dll : Unable to load the test container 'e:\some.dll' or one of its dependencies 时出错

转载 作者:行者123 更新时间:2023-12-01 05:26:27 25 4
gpt4 key购买 nike

我有一个 VS2010 C#项目,它引用了大量 native .dll(商业 Java 运行时)。这些文件在项目中被称为“内容”文件,因为需要与项目一起复制。

这些库中的代码使用 PInvoke 调用,没有程序集引用。

每次我编译解决方案时,Visual Studio 测试框架都会尝试加载所有引用的 dll 文件,期望找到可能包含单元测试的 .net 程序集。由于不是 .net 程序集,因此抛出以下异常:

Error loading some.dll: Unable to load the test container 'e:\some.dll' or one of its dependencies. If you build your test project assembly as a 64 bit assembly, it cannot be loaded. When you build your test project assembly, select "Any CPU" for the platform. To run your tests in 64 bit mode on a 64 bit processor, you must change your test settings in the Hosts tab to run your tests in a 32 bit process. Error details: Could not load file or assembly 'file:///e:\some.dll' or one of its dependencies. The module was expected to contain an assembly manifest.



这需要很多时间,我想告诉 Visual Studio 不要尝试加载这些文件。

如何告诉 Visual Studio 停止尝试加载这些文件?

最佳答案

如果我弄错了,请纠正我:
您将 P/Invoke 目标二进制文件包含到 VS 解决方案中,因为您希望在构建解决方案时将二进制文件复制到目标目录。你想要这个是因为一旦构建了 VS 解决方案,项目就会从目标目录执行。正确的?

很多时候,VS 包(默认的和第 3 方的)会尝试对解决方案的内容变得聪明,并且会遵循某些触发器(这些触发器很难由我们自己控制和控制)并以自己的方式加载解决方案和项目内容。与采用更简单的解决方法(如下)相比,在该领域进行战斗的投资返回率较低。

虽然我无法为您提供关于如何告诉 VS 的测试包不加载所有二进制文件的权威答案,但我建议将此类二进制文件作为“内容”从项目中删除,并将它们保留在您的源代码控制中。添加一个构建后任务,将上述二进制文件复制到目标。这仍然会为您提供与今天相同的结果,但会使这些二进制文件无法用于测试探针。

关于visual-studio-2010 - 加载 some.dll : Unable to load the test container 'e:\some.dll' or one of its dependencies 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com