我是c#的新手,我对我的发布输出生成的文件数量感到震惊。
我写了一个非常简单的程序,我想分发,没有外部资产或任何特殊的东西。 但仍然有10-15个文件生成(.dlls,.pdbs,.configs等等)
我昨天做了一些研究,我觉得在没有真正麻烦的情况下根本无法清理这个烂摊子?
我试过Fody(根本不工作)和Tidybin(或类似的东西?)(创建了一个lib文件夹,把所有内容放在那里,这很不错,但程序停止工作并丢失了有关丢失的内容文件)
我正在寻找一种生成干净发布版本的方法。
理想情况下,只有我的exe,嵌入了所有的dll和其他东西,但我读到的所有内容都远远超过我的头脑并且过于复杂(为什么这不容易做到?)
如果那不可能,我会很高兴将除.exe之外的所有内容移到lib
文件夹中。但这似乎不起作用。如何更新我的应用程序中的路径,以便仍然可以找到这些文件?就像我说的那样,插件似乎完成了一半的工作,同时留下了所有的链接。
(旁注:为什么所有这些插件都没有任何种类的封装?我真的不知道该怎么做)
感谢
答案 0 :(得分:1)
如果您有一个简单的应用程序,那么文件夹中的内容就不应该那么多。
实际上,应该有:
如果引用了System.Net.Http
库,则可能会创建一个包含许多本地化的文件夹。如果您不使用它:删除参考。
请注意,您无需部署所有这些文件!如果应用程序仅引用框架DLL,则只需要.exe和.exe.config文件。
DLL不会被嵌入,但如果它们是框架库,则不应将它们添加到输出文件夹中,除非您设置"复制本地"参考资产。而且您不需要将它们与您的应用程序一起部署,显然它们与目标系统上的.NET框架一起安装。
如果您引用任何不属于.NET Framework的DLL,通常会将它们与您的应用程序一起部署。将它们与应用程序一起放在文件夹中最简单,但您也可以将它们放在目标系统的全局程序集缓存中。
是解决方案,它们将可执行文件,第三方DLL和内容打包到每次启动应用程序时解压缩的EXE包装器中,但我建议不要这样做。用户不会期望这种情况发生,病毒扫描程序可能会阻止这种情况,并且.NET设置等内置机制可能无法正常运行这些解决方案。
答案 1 :(得分:0)
分发代码的最简单方法是使用InstallShield Visual Studio版本。 (可在Visual Studio许可证中使用)
下载并注册,然后在您的解决方案中添加新的分发项目。
InstallShield Limited Edition for Visual Studio
向导将通过选择主要分发文件来帮助您。它是分发应用程序新版本的有用工具。
作为我使用的第二个选项是ClickOnce(Microsoft),但是对于特定的内部应用程序。