C# 如何防止Visual studio从其项目引用路径的不同路径加载DLL

C# 如何防止Visual studio从其项目引用路径的不同路径加载DLL,c#,.net,visual-studio,C#,.net,Visual Studio,我注意到VisualStudio在任何地方(其他项目,GAC,…)查找引用的dll,如果该dll不在引用路径中。这种情况主要发生在金块包装上。 有没有办法防止这种行为 我认为这种行为是危险的,因为它给了您错误的安全性,即您的应用程序正确地拥有所有引用的DLL,在部署应用程序时,您可能会得到一个惊喜 谢谢在http服务器上,.Net Framework确实可以查看应用程序目录或子目录、GAC和(如果部署到) 你可以找到描述 对于GAC和http服务器,框架确实需要强名称签名。因此,如果程序集不是强

我注意到VisualStudio在任何地方(其他项目,GAC,…)查找引用的dll,如果该dll不在引用路径中。这种情况主要发生在金块包装上。 有没有办法防止这种行为

我认为这种行为是危险的,因为它给了您错误的安全性,即您的应用程序正确地拥有所有引用的DLL,在部署应用程序时,您可能会得到一个惊喜


谢谢

在http服务器上,.Net Framework确实可以查看应用程序目录或子目录、GAC和(如果部署到)

你可以找到描述

对于GAC和http服务器,框架确实需要强名称签名。因此,如果程序集不是强签名的,框架将不会在那里搜索

在部署具有发行版的应用程序时,通常还应包括在非开发工作站(未安装visual studio或任何其他设备)上的测试安装。此外,检查是否部署了所有依赖程序集是编程的另一项任务(至少在我看来)。
Visual studio也会将引用的nuget packages程序集复制到输出目录,而无需任何手动操作。

您所描述的不是Visual studio的行为,而是.NET本身的行为。如何以及在何处解析程序集的过程是该技术的一个固有和基本部分。在我看来,你是在反驳.NET的一个范例


但是,您可以使用一些变通方法。包含Microsoft对.NET运行时如何定位程序集的描述。因此,你可以试着用这些方式来表达,例如。G不签名程序集将跳过访问GAC。

谢谢dsdel,但我要求提供任何阻止此行为的visual studio选项,因此当引用的dll不在正确位置时,我会得到编译错误。这应该会产生错误。但是,在VisualStudio项目中使用引用和在部署发布版本时使用引用是不同的。请检查您的引用是否已将“复制本地”属性设置为True。