我有以下问题:
我正在开发多个 WPF 应用程序,它们都必须使用相同的 dll。 该 dll 位于我选择的目录中,但我不想将其复制到所有单个应用程序输出目录,因此我可以对 dll 进行更改,而无需重新编译使用该 dll 的所有应用程序。 如何将 dll 链接到 Visual Studio 2022 中的应用程序作为参考或其他内容,而不必在构建过程中将 dll 复制到应用程序的输出目录中?
我已经尝试将 dll 添加为现有元素,但我无法让项目找到这样的 dll。当我将它们添加为引用时,必须将它们复制到输出目录,否则 dll 将无法被识别。
一个额外的:我有另一个 dll,其中包含一些我想使用的自定义用户控件(如果有帮助的话,我将项目创建为用户控件库)。最好的选择是以某种方式链接另一个 dll,以便我可以直接在 XAML 窗口中使用用户控件,这样我就无法在运行时真正加载该 dll。我该怎么做?
感谢您提前提供的任何帮助, 大卫
编辑:我正在使用 .NET Framework 4.8.1
感谢您的帮助。最后,我昨天在 Copilot 的帮助下自己解决了这个问题。
我将 dll 添加为普通引用,但将本地复制设置为 false,因此 dll 不会被复制到输出文件夹。然后我将以下代码写入我的启动类:
private List<string> dllsToLoad = new List<string> {
"dllToLoad.dll"
};
public App() {
AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;
}
private Assembly OnResolveAssembly(object sender, ResolveEventArgs args) {
string assemblyName = new AssemblyName(args.Name).Name + ".dll";
// check if the dll needs to be loaded
if (dllsToLoad.Contains(assemblyName)) {
string assemblyPath = Path.Combine(@"path/to/dll", assemblyName);
if (File.Exists(assemblyPath)) {
return Assembly.LoadFrom(assemblyPath);
} else {
MessageBox.Show($"Could not find the dll {assemblyPath}.");
Application.Current.Shutdown();
}
}
return null;
}
我还将尝试使用提到的符号链接@NPras来解决它。我要研究的另一件事是您可以在项目属性中添加的参考路径文件夹,但我现在还没有让它发挥作用。