关键词(解决的问题):

CS1704: 已导入具有相同简单名称的程序集。尝试删除其中一个引用或对其进行签名以并行启用。

“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=155569。”

背景概述:

C# 项目:

解决方案中所有项目都是生成的dll,然后调试的时候启动了一个外部程序:

这个程序依赖了解决方案中的各个项目生成的dll。

这种与我之前常用的架构不同,之前的解决方案就是有一个启动项目,把这个项目设置为启动项目,直接点击vs的绿色三角就跑起来软件了。

然后按照之前的套路:VS2022 远程调试,和判断是否是远程调试状态_vs2022远程调试-CSDN博客

配置完成后,启动的时候遇到了第一个错误:

CS1704: 已导入具有相同简单名称的程序集。尝试删除其中一个引用或对其进行签名以并行启用。

下面是微软官网的解释:

解决程序集引用不正确或缺失的问题 - C# reference | Microsoft Learn

这个错误要找到对应引用的dll,看一下属性里面的路径。

因为是远程调试,所以在我的笔记本上和被远程的电脑上都有bin环境存在,我发现报错的dll引用路径是被远程的电脑上的路径,我把他修改到了我笔记本上的路径,这个问题就不会再弹出了。

接着继续运行,遇到了第二个错误:

“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=155569。”

然后参考C#在使用Assembly加载程序集时失败 - 持&恒 - 博客园

我在我的解决方案中启动项目的配置文件中添加了<loadFromRemoteSources  
   enabled="true"/>:

发现并没有作用,然后研究思考了一下,加载插件的地方不是这个启动项目,这个启动项目只是一个插件,要修改配置的地方不在这里,而是在你调用了Assembly.Load方法的那个项目那里。

针对我的项目框架,调用了Assembly.Load方法只有在我启动的那个外部程序中。

然后去找外部程序的配置文件:

在这个配置文件添加<loadFromRemoteSources  
   enabled="true"/>

运行无异常。

后续再观察一下,有先发现的话再说。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐