在Visual Studio网站项目中(在Visual Studio 2005或更高版本中,而不是仍存在.csproj文件的Web应用程序项目)如何存储参考信息,是否可以在不将源编译的二进制文件存储在源代码管理中的情况下对其进行控制?
如果右键单击网站项目并选择"属性页",则第一个屏幕(引用)将列出所有项目引用.
System.*引用列为GAC类型,其他DLL文件可以列为BIN或Project.
当您将某些内容包含为项目引用,然后将其提交给源代码控制(对于我们,Subversion,忽略.dll和.pdb文件)时会出现此问题.)
另一个开发人员从存储库中获取更新的代码,并且必须手动设置所有这些项目引用,但我甚至无法确定存储此信息的位置,除非它位于.suo中,这不是源代码控制友好的.
如果您通过浏览选项卡引用.dll文件名,则应该创建一个.refresh文件(嵌套在BIN中的dll下).我们将它们放在SVN中并且效果很好(您可能需要手动编辑它们以使用相对路径).
从.NET选项卡添加的引用将添加到web.config中
项目引用存储在解决方案(.sln)文件中.打开.sln文件,你会看到它们列出:
Project("{xxxxxxx-7377-xxxx-xxxx-BC803B73C61A}") = "XXXXXXX.Web", "XXXXXXX.Web", "{xxxxxxxx-BB14-xxxx-B3B6-8BF6D8BC5AFF}" ProjectSection(WebsiteProperties) = preProject TargetFramework = "3.5" ProjectReferences = "{xxxxxxxx-C3AB-xxxx-BBED-2055287036E5}|XXXXXX.Data.dll; ...
Visual Studio中的"Web站点"项目是一件奇怪的事情.它们似乎是为了迎合传统的Web开发人员,其中"站点"只是目录中的一组文件.以同样的方式,当你在Visual Studio中创建一个"Web站点"项目时,没有真正的"项目"文件,比如C#项目有一个.csproj文件.但是,仍然存在解决方案文件(.sln).通常,程序集.dll引用保存在项目文件中.由于网站没有网站,它们去哪里了?
参考其他项目
如果添加对另一个项目的引用,则在解决方案.sln文件中创建一个条目.最终看起来像这样:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebSite1", "..\..\WebSites\WebSite1\", "{F25DB9D6-810D-4C18-ACBB-BFC420D33B20}" ProjectSection(WebsiteProperties) = preProject TargetFramework = "3.5" ProjectReferences = "{11666201-E9E8-4F5A-A7AB-93D90F3AD9DC}|ClassLibrary1.dll;"
文件系统参考
如果浏览文件系统并添加.dll文件,则Visual Studio将在\ Bin文件夹中创建一个名称相同的".refresh"文件.此文件只是一行文本文件,指示文件的加载路径.例如,如果我从....\libs添加"MyAssem.dll",那么在Web Site\Bin文件夹中,我最终会复制2个文件:MyAssem.dll和MyAssem.dll.refresh..refresh文件将包含文本:"....\libs".在每次构建时,Visual Studio将检查.refresh文件中的路径,如果存在较新的.dll,它将覆盖Bin目录中的路径.
警告:如果.refresh文件告诉它看起来不存在该文件,Visual Studio将不会抛出错误.它将继续使用\ Bin文件夹中已有的.dll.但是它会输出一个警告.
GAC参考
如果从全局程序集缓存添加程序集,Visual Studio将在Web.config文件中输入它,如下所示:
此外,您需要注意的是,Visual Studio假定如果程序集位于开发计算机上的GAC中,那么它将在运行时位于同一位置!如果你可能已经Oracle.DataAccess
在你的开发机器上安装了它会让你陷入麻烦,这会把它放在GAC中,但是当你部署时,你只需将.dll复制到生产机器上.它仍然会尝试在GAC中找到它并且可能在运行时失败.
我希望这有助于清理奇怪的isund网站以及参考如何工作!