0

我有一个包含 3 个项目的 ASP.NET (4) Web App 解决方案。项目 A 引用 B 和 C(以及一堆其他 3rd 方 DLLS,如 Crystal Reports 等)。

我有 3 个构建配置,调试、测试和发布。

如果我在任何配置中进行构建,则构建的 DLLS(和 PDB,如果它是 Debug 的话)将按照它们应有的方式放置在各自的文件夹中。

所以 Test 被内置到 {root}\bin\x86\Test

释放到 {root}\bin\x86\Release

调试到 {root}\bin\x86\Debug

此外,所有引用的 dll 都将其“复制本地”属性设置为 true,因此它们被复制到 {root}\bin 文件夹中,以便我可以在 VS 中本地运行和测试。

在构建/重建主应用程序 DLL (ProjectA.dll) 时,它不会被复制到 {Root}\bin 文件夹中,而只是留在所选构建配置的文件夹中,如上所述。因此,当我在 VS 中运行应用程序时,出现错误“无法加载类型”ProjectA.Global_asax”。鉴于主项目 DLL 不在 Web 服务器正在寻找的 Bin 文件夹中,这并不奇怪。

我可以让它运行的唯一方法是自己手动将 ProjectA.dll 复制到 {Root}\bin 文件夹中,这似乎是无稽之谈,而且显然充满了我在每次构建后忘记复制最新版本的风险。

当然必须有一种方法告诉 VS 将主应用程序 dll (ProjectA.dll) 以及所有引用的 dll 复制到主 {Root}\bin 文件夹中?

显然,由于 ProjectA.dll 是主应用程序集,它不在引用列表中,所以我不能只为其设置“复制本地”属性。除非它隐藏在其他地方?我已经搜索了 VS 中的每个表单和对话框(以及 Google 上的几个小时!),只是看不到如何告诉 VS“完成构建后请将主应用程序程序集复制回 bin 文件夹”。

有人可以帮忙吗,这让我发疯了!

非常感谢

标记

4

1 回答 1

0

如果您只是想避免在每次构建后手动移动 dll,那么您可以创建一个 Visual Studio 构建后事件来复制 dll。这里这里的一些例子。

于 2013-09-21T07:02:54.543 回答