0

我有一个需要保持同步的 .EXE/.DLL 对。

.EXE 具有对 DLL 的引用。

在实践中,似乎我需要做的就是将最新的 DLL 复制到最新的 EXE 所在的文件夹中,以让 EXE 在运行时引用正确的 DLL(就在它旁边的那个)。

但是,每当我更新 .EXE 时,都必须更新 .EXE 项目以显式引用新的 DLL。我这样做:

Removing the old DLL reference from the EXE project
Adding back the reference, pointing to the location of the latest version of the DLL

注意:没有这些步骤,.EXE可以正常编译,但在引用旧的并与新的同时存在时,它不会运行。

潜在的问题是,每当我回到 .EXE 项目时,它都会恢复到引用旧 DLL ——而不是我最近设置它引用的那个!IOW,我用一个路径删除版本 1.3.3889.27538,用另一个路径(DLL 项目的输出文件夹)中的版本 1.4.0.8 替换它,并且 .EXE 编译(并运行)很好,但是当我再次打开 EXE 项目时,DLL 再次引用 DLL 的 1.3.3889.27538 版本,指向该版本的路径。

每当我转身时,是否有一些设置顽固地恢复到旧的 DLL?

我不知道这是否重要,但是EXE项目中DLL引用的“复制本地”属性设置为“真”

更新

注意:当我删除然后添加回 DLL 引用(到最新版本的 DLL)然后构建 EXE 时,我必须在一个对话框中选择“确定”,通知我,“保存项目用户选项时发生错误对于文件“ .csdproj.user

然后我必须在“将文件另存为”对话框中选择“保存”按钮来保存项目文件。一旦我选择“是”来替换已经存在的文件,它就会构建得很好。

隐含?Es importante o de nada?

4

1 回答 1

1

当您将第 3 方类库 (DLL) 的引用添加到 .NET 项目时,项目配置(.csproj.vbproj)文件中会出现相应的行。与其他设置一起,该行指定了引用类库的程序集版本。例如:

<Reference Include="Telerik.WinControls, Version=2015.1.225.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL" />

这意味着:如果您更新外部 3-rd 方库的版本,您还需要显式更新项目引用

如果您希望外部类库始终指向最新版本,则它必须是Project Reference。换句话说,您将一个类库项目添加到您的解决方案中,然后在您的主项目中添加对该项目 (DLL) 的引用。这样,您将始终在输出文件夹中获得最新的相关 DLL。

但同样,如果您使用的是 3 方库,则必须显式更新项目引用以指向最新的 DLL。

于 2015-05-05T20:04:02.817 回答