我需要在 Visual Studio 2005 的网站项目中引用一个程序集。我在解决方案中有一个名为 Assemblies 的文件夹,其中包含所有第三方程序集。我可以右键单击解决方案资源管理器中的网站项目,然后选择“添加引用...”,然后导航到程序集文件夹以获取程序集。一旦我这样做了,项目就会正确构建。
然后我将更改提交到 subversion 存储库,它声称没有任何更改。
当然,如果我在另一台机器上获得源树的副本,它将不会构建,因为它没有引用程序集。
我错过了什么?我觉得这应该是显而易见的,但事实并非如此。
看起来这个问题与网站项目的“好奇心”有关。当您引用外部程序集时,将为每个引用的程序集创建一个 .REFRESH 文件。如果这些 .REFRESH 文件未在源代码控制系统中进行版本控制,那么当将解决方案拉到另一台计算机上时,它无法找到程序集。一旦我将 .REFRESH 文件添加到源代码管理中,解决方案就会在计算机之间正确传输。
这篇博文提供了有关正在发生的事情的更多信息:http://monsur.xanga.com/437206798/dllrefresh-and-aspnet/
如果您关闭项目,它是否会警告您未保存的更改?
网站项目中的引用存储在
system.web/compilation/assemblies
的 web.config 中,因此您始终可以手动添加它们。
这听起来并不像一个愚蠢的答案:您点击“全部保存”了吗?我遇到过一些情况,即使我期望 Visual Studio 能够保存所有内容,但 Visual Studio 也没有保存所有内容。
完全关闭 VS 是一个很好的迹象,表明它没有保留内存中的任何内容:)
事实上,这是一个很好的测试 - 如果你关闭 VS 然后重新打开它,然后从头开始重建,它仍然可以构建吗?