Visual studio 2010 多个解决方案/项目引用公共程序集的最佳方式是什么?

Visual studio 2010 多个解决方案/项目引用公共程序集的最佳方式是什么?,visual-studio-2010,reference,Visual Studio 2010,Reference,我有几个Visual Studio解决方案/项目(一些是VB,一些是C#),它们在设计时都引用了一个公共DLL。此DLL不必复制到输出文件夹,因为它仅在编写代码时才需要。每隔几个月,这个DLL就会更新到一个更新的版本,我的所有项目都需要引用更新的版本 处理此问题的最佳方法是什么?您可以创建nuget资源,并使用nuget Server(teamcity支持它的最新版本)-所有更新都将由nuget处理 另一种方法是在该文件夹中创建公共文件夹和所有指向dll的项目点(相对而言)。在这种情况下,您需要

我有几个Visual Studio解决方案/项目(一些是VB,一些是C#),它们在设计时都引用了一个公共DLL。此DLL不必复制到输出文件夹,因为它仅在编写代码时才需要。每隔几个月,这个DLL就会更新到一个更新的版本,我的所有项目都需要引用更新的版本


处理此问题的最佳方法是什么?

您可以创建nuget资源,并使用nuget Server(teamcity支持它的最新版本)-所有更新都将由nuget处理

另一种方法是在该文件夹中创建公共文件夹和所有指向dll的项目点(相对而言)。在这种情况下,您需要在一个文件夹中创建dll(重建后,解决方案dll将自动更新)


当然,您可以始终在GAC(全局程序集缓存)中安装dll,这是由名为gacutil.exe的工具处理的(在网络中有很多处理它的示例)。

您必须使用共享程序集,在GAC(全局程序集缓存)中共享

比方说,你已经编写了一个类,一个软件,不管你有什么,你想让它成为一个共享的程序集

首先,通过在VS中创建一个新的类库项目,并将所有代码传输到该项目中,使其成为程序集。不要构建/运行它!请注意,我们只是传输代码,但程序集(即.DLL文件)尚未实际生成,因为我们尚未构建项目

在构建程序集之前,我们必须通过两个步骤创建/共享一个已知程序集的密钥:

a) 通过在VS cmd中执行以下命令来创建密钥:

sn-k“C:[DirectoryToPlaceKey][KeyName].key“b)通过将以下属性添加到类库项目属性文件夹中的AsseblyInfo.vb/cs文件来共享它:

在VB.Net中:

在C#中:

[Assembly:AssemblyKeyFile(“C:[包含密钥文件的目录][KeyName].key”)](只需将其复制并粘贴到AssemblyInfo.vb/cs文件中,但要写入目录和文件名)

现在,通过构建项目来创建部件。只需构建项目(至少只需按F5一次!)。通过这样做,我们需要的.dll文件(程序集)将在项目的同一文件夹中的“bin”文件夹中创建

现在,我们通过将.dll文件复制到GAC(全局程序集缓存:它是所有程序集聚集的地方。目录是:“C:\windows\Microsoft.Net\Assembly\GACmsil”,但您不需要知道,因为下面的工具为您做了这件事~),方法是在VS cmd中执行下面的命令:

gacutil-I“C:[PathToBinDirectoryInVSProject]\myGAC.dll”

你完了!现在,您可以从所有应用程序中引用和使用共享程序集,并且只要更新共享程序集即可

希望有帮助