我使用c#编写了一个Windows窗体应用程序并创建了安装文件。一切正常。 我的问题是;我们可以选择应该包含哪些dll和exe文件来设置,就像我们可以选择应该删除哪个dll或者至少在我们尝试卸载程序时,它是否可以向我们询问“我是否应该这些...常见的dll文件“? 因为当我卸载它时,它可以删除系统当前正在使用的常见dll。所以会有问题。 我在visual studio中制作了安装文件。
答案 0 :(得分:2)
从表面上看这个问题:你实际上不太可能安装其他程序共享的DLL。 VS构建系统和安装项目向导都非常努力阻止您这样做。在.NET中唯一有效的方法是强化程序集并将其部署到GAC中。非GAC方式是实现AppDomain.AssemblyResolve事件。如果你真的这样做,你会在你的问题中提到过。
Winforms应用程序的正常部署模式是ClickOnce或安装程序,就像您所做的那样,或者只是复制文件。如果在安装之后,EXE和它使用的DLL都在一个目录中,那么你就不会共享任何DLL。
如果我猜错了,你实际上是在共享DLL,那么到目前为止最好的解决办法是停止这样做。 DLL Hell没什么好乱的。
答案 1 :(得分:0)
您可能会考虑另一个包装软件,如InstallShield,Visual Studio Packaging项目不提供此类配置。