我正在做一个AutoCAD外接程序项目,它将引用AutoCAD dll.其中一个挑战是我们的笔记本电脑上有不同的CAD版本。因此,我在不同版本中有不同的解决方案,因此每个解决方案都可以在开发过程中引用其相关的DLL。
例如:
构建两个解决方案,分别是2018年的AutoCAD插件和2019年的AutoCAD插件。它们都引用了不同版本的AutoCAD动态链接库。但是,代码几乎是一样的。
引用不同的DLL并不困扰我,因为DLL不会复制到解决方案文件夹(AutoCAD需要这样做)。它将使用AutoCAD文件夹中的任何版本。例如,我在C:\Program上安装了C:\Program2018年。当AutoCAD加载插件dll时,插件dll将使用AutoCAD文件夹中相同的任何相关dll。
我希望有一个解决方案,它指的是不同版本的dll,当您构建解决方案时,您将把解决方案编译成具有不同版本名称的不同插件。
因此,例如,Visual将生成两个dll:
这样我就不需要在不同的解决方案中维护相同的代码。
就有可能这么做吗?
发布于 2022-10-21 06:31:00
你和我也有同样的情况。我所做的是使用Post生成/预构建事件将我需要的DLL版本复制到输出文件夹https://learn.microsoft.com/en-us/visualstudio/ide/reference/pre-build-event-post-build-event-command-line-dialog-box?view=vs-2022
示例:
echo $(ConfigurationName)
if "$(ConfigurationName)"=="Release" (copy $(SolutionDir)\dlls\file1.dll $(SolutionDir)bin\x86\Release\file1.dll)
if "$(ConfigurationName)"=="Any" (copy $(SolutionDir)\dlls\file2.dll $(SolutionDir)bin\x86\Release\file1.dll)此外,还可以创建自定义生成批处理文件(.bat)。我还没有试过这个,但我看到其他项目使用它为Fortify代码扫描请求创建构建。https://learn.microsoft.com/en-us/visualstudio/ide/specifying-custom-build-events-in-visual-studio?view=vs-2022
https://stackoverflow.com/questions/74148011
复制相似问题