我注意到Visual Studio会在任何地方查找引用的dll(其他项目,GAC,...),如果该dll不在引用路径中。它主要发生在金块包上。 反正有没有阻止这种行为?
我认为这种行为是危险的,因为它会给你错误的安全性,你的应用程序已经正确地重新设置了dll,在部署应用程序时你会感到意外。
由于
答案 0 :(得分:1)
.Net Framework会查看http服务器上的应用程序目录或子目录,GAC和(如果部署到)。
您可以找到说明here。
对于GAC和http服务器,框架确实需要强名称签名。因此,如果您的程序集没有签名,那么框架将不会在那里搜索。
在部署带有发布的应用时,通常还应该在非开发工作站上安装测试版(没有安装Visual Studio或其他任何工作站)。另外,检查是否部署了所有依赖程序集是另一项编程任务(至少在我看来)。 Visual Studio还会将引用的nuget包程序集复制到输出目录,而无需任何手动操作。
答案 1 :(得分:1)
您所描述的不是Visual Studio的行为,而是.NET本身。如何以及在何处解决装配的过程是该技术的内在和必要部分。所以在我看来,你与.NET的一种范式相矛盾。
但是,您可以使用几种解决方法。 This post包含Microsoft对.NET运行时如何定位程序集的描述。因此,你可以尝试运用这些方式,例如: G。不签署程序集将跳过访问GAC。