1

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

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

4

2 回答 2

2

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

比如说,你已经编写了一个类、一个软件,无论你有什么,你想让它成为一个共享的程序集。

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

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

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

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

在 VB.Net 中:

在 C# 中:

[Assembly: AssemblyKeyFile("C:[directory contains the key file][KeyName].key")] (只需将其复制并粘贴到 AssemblyInfo.vb/cs 文件中,但改写您的目录和文件名)。

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

现在我们通过将 .dll 文件复制到 GAC 中来共享它(全局程序集缓存:它是所有程序集聚集在一起的地方。目录是:“C:\windows\Microsoft.Net\assembly\GAC_MSIL”但你没有需要知道,因为下面的工具会为您执行此操作~)通过在 VS cmd 中执行以下命令:

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

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

希望有帮助!

于 2012-04-18T17:56:38.653 回答
0

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

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

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

于 2012-04-18T17:54:18.360 回答