0

我有一个由多个相互依赖的项目组成的解决方案。当我构建项目/解决方案时,它会在 Project\bin 文件夹中创建应有的 DLL 程序集文件。但是当我运行程序时,它会将所有内容复制到临时文件夹并从那里运行它:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ApplicationName

所以现在在 bin 文件夹和运行它的临时文件夹中的每个项目都有相同的 DLL 文件。问题是我在几个地方对我的项目中硬编码的 bin 目录的引用,所以当它看起来在那里时,它会返回一个 DLL 混淆和错误。如何让 Visual Studio 从原始 bin 目录运行程序集文件,而不是复制它们并从临时文件中运行它们?

PS 请不要告诉我更改硬编码——它必须保持原样是有原因的;这就是为什么我试图弄清楚如何从垃圾箱中运行。

谢谢

4

1 回答 1

2

这被称为影子复制,它是一种设计功能。特别是对于 ASP.NET 站点,它可以在不卸载应用程序域的情况下更新域程序集,这对于设计为连续运行的 ASP.NET 站点非常重要。我真的建议保留它,并重新评估使用 \bin 目录的要求。

如果您真的想禁用卷影复制,请将以下内容添加到您的 web.config 文件中:

<hostingEnvironment shadowCopyBinAssemblies="false" />

执行上述操作的副作用是您的 \bin 目录中的程序集将在应用程序的生命周期内被锁定。

于 2010-07-14T16:02:44.270 回答