我在源代码控制下有一个ASP.NET项目(Subversion)。由于各种原因,我不想将\ Bin目录或其内容添加到源代码控制中,所以我有svn:忽略它。在Visual Studio构建期间将DLL加载到此处,我可以从一个干净的目录开始和/或删除此目录的所有内容,但仍然可以成功构建。
我可以通过两种方式引用代码以包含在项目中:
<add>
以这种方式在GAC中的任何DLL。我为所有的系统dll做了这个。(请注意,这与非Web项目不同,其中所有对外部依赖项的引用都存储在项目文件中。对于VS Web项目没有项目文件,所以它们必须存储在某个地方别的。)
现在我有一个第三方编译的DLL,我想在项目中包含它。不幸的是,我发现的参考选项似乎都不适合我:
我是否有另一种方法可以引用DLL文件并让它坚持下去?
答案 0 :(得分:5)
如果您正在进行任何类型的认真开发,我建议您从网站项目迁移到Web项目,因为这样您就可以在整个解决方案中以相同的方式管理这些依赖项。
但是,假设您无法执行此操作,请将需要从Web项目引用的所有程序集放在某个位置的文件夹中(例如lib \ web),并将预构建事件添加到复制内容的Web项目中将该文件夹放入web目录的bin文件夹中。现在,只要您想为Web项目添加依赖项,就可以将其放在lib \ web文件夹中,然后添加引用。无论何时构建,所有引用的程序集都将被复制到文件夹中,这样您就可以删除bin文件夹或执行干净的检出并且没有任何问题。
答案 1 :(得分:2)
从技术上讲,在第3步中会发生更多。 Visual Studio将DLL复制到\ Bin目录,并添加一个name.dll.refresh文件,其中包含原始DLL的路径。使用SourceSafe,.refresh文件受版本控制,因此当您设置新系统并从SourceSafe获取最新代码时,Visual Studio可以从指定位置查找并复制DLL。您应该能够将.refresh文件放在svn中并使一切正常。
另外,我通常在我的项目目录上创建一个\ Common目录,这是我放置DLL的地方,我在解决方案(和源代码控制)中包含该目录,以便我的项目在源代码管理中的每个版本都有正确的DLL。
答案 2 :(得分:0)
到目前为止,我想到的唯一方法是让我的NAnt构建脚本在构建之前将DLL从外部(版本化)lib目录复制到\ Bin目录中。我不太喜欢这个,因为它引入了一个不在Visual Studio中的进程依赖:开发人员必须确保在尝试构建VS内部之前复制库。
答案 3 :(得分:0)
我在源代码管理中保存没有源代码的第三方程序集。在项目之外的自己的目录中 - “C:\ Projects \ 3rdPartyAssemblies”这样,任何需要它们的项目/开发人员都可以引用它们。
答案 4 :(得分:0)
项目引用存储在.csproj或.vbproj文件中,该文件应受源代码管理。 .refresh文件完全不相关,只是工作室的辅助文件。如果您在项目或解决方案的本地目录中创建了一个目录,并将所有未在GAC中的已编译引用存储在此目录中,则可以将该目录添加到源控件并直接从那里引用。这样,所有开发人员都可以保证在执行下一次编译时拥有.dll的最新副本(来自源代码控制),并且永远不会影响/ bin。
让您的开发人员“获取最新版本”...您可以自己选择该版本。我还没弄明白。
也许是另一份备忘录。