你知道,我在任何地方都没有看到一个好的答案.是否可以将预先存在的DLL嵌入到已编译的C#可执行文件中(这样您只能分发一个文件)?如果有可能的话,怎么去做呢?
通常情况下,我很酷,只是将DLL放在外面并让安装程序处理所有内容,但是有几个人在工作,他们问我这个,老实说我不知道.
我有一个C#项目(调用它MainProj)引用了其他几个DLL项目.通过将这些项目添加到MainProj引用中,它将构建它们并将其生成的DLL复制到MainProj的工作目录中.
我想做的是将这些引用的DLL放在MainProj工作目录的子目录中,即MainProj/bin/DLLs,而不是工作目录本身.
我不是一个非常有经验的C#程序员,但是来自C++世界,我假设一种方法是删除项目引用并通过路径和文件名显式加载所需的DLL(即在C++中LoadLibrary).然而,我更喜欢做的,如果有办法的话,就是设置某种"引用二进制路径",所以当我构建时它们都被自动复制到这个子目录中(然后从那里引用它们)我需要明确加载每个).这样的事情可能吗?
如果不是,那么C#中首选的方法是什么来实现我所追求的目标(即Assembly.Load/ Assembly.LoadFile/ Assembly.LoadFrom?某些东西AppDomain,或者System.Environment?)
我需要一个例子,可以让我传递一个参数
例如执行delete.exe /killme.txt
所以它会在重启后使用"MoveFile"删除killme.txt.
虽然请不要MS预编译版本,因为它有一个恼人的免责声明,每次它在不同的计算机上运行.