gpt4 book ai didi

.net - NET.addAssembly 返回奇怪的 Could 以加载程序集或其依赖项之一

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

我在 Matlab 中加载我的一些程序集时遇到一个奇怪的问题:

function [] = foo()
%[
fold = 'c:\FolderWithAllAssembliesAndDependencies';

try
NET.addAssembly(fullfile(fold, 'MainAssembly.dll'));
catch ex
if (isa(ex, NET.NetException) && isfield(ex.ExceptionObject, 'LoaderExceptions'))
error(char(ex.ExceptionObject.LoaderExceptions.Get(0).Message));
else
rethrow ex;
end
end
%]

返回

Could not find 'SubAssembly, Version=3.0.58.0, Culture=neutral, PublicKeyToken=e33b67d3bb5581e4' or or one of its dependencies. File not found.

但是如果尝试自己加载这个子程序集是可以的:

NET.addAssembly(fullfile(fold, 'SubAssembly.dll')); % No issue !!!

我在 C# 中尝试了一个简单的控制台程序(针对 .NET Framework 4.0)并且加载主程序集没有问题:

static void Main(string[] args)
{
Assembly.LoadFrom(@"c:\FolderWithAllAssembliesAndDependencies\MainAssembly.dll"); // Works fine !!!
}

我正在使用 matlab R2015b 和 R2019a,程序集的目标框架如下:

  • MainAssembly.dll => .NET Standard V2.0
  • SubAssembly.dll => .NET Framework v4.6

我还尝试将 matlab.exe.config 文件(在 matlab 安装文件夹中)修改为以下内容:

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.6"/>
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>

并重新启动 matlab,但它仍然无法加载 MainAssembly,我看不出有什么问题(即在上面的简单控制台程序中加载 MainAssembly 没有问题 [即使它仅针对 .NET 框架 v4.0])。

最佳答案

    MainAssembly.dll => .NET Standard V2.0
SubAssembly.dll => .NET Framework v4.6

那行不通(可能)。您的应用程序集从允许更新的 .NET 运行时的 .NET 2.0 上下文开始,然后尝试加载使用 .NET 4.6 编译的程序集。

您可以尝试先加载 SubAssembly,这应该启动 .NET 4.6 上下文,然后加载 MainAssembly。一个更简单的解决方案是使用 .NET 4.6 编译您的 MainAssembly。备份声明的来源:social.msdn.microsoft.com由 Microsoft 员工提供。

或者可以创建一个使用 .NET 4.6 编译的 .dll,它引用您的 MainAssembly.dll,然后在 Matlab 中加载这个新创建的程序集。

如果你真的想深入研究这个问题,或者认为这是一个不同的问题,你可以使用 fuslogvw .该工具将列出所有绑定(bind)请求以及什么程序集请求什么依赖项以及它是否成功。

关于.net - NET.addAssembly 返回奇怪的 Could 以加载程序集或其依赖项之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624373/

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