我在Windows上运行了一个简单的gtk #monomon应用程序。它在安装了Mono,.NET和GTK的PC上运行良好。但如果我把这个exe给了朋友,它显然不起作用。
Mono的mkbundle工具似乎没有在没有大量麻烦的情况下在Windows上运行(我已经尝试过)。因此,当我将它提供给朋友时,我已经恢复了快速解决方案,只需将必要的DLL包含在exe中。
但我不知道需要什么。到目前为止,我的猜测是错误的。我尝试了包含mkbundle想要嵌入的所有内容,但这不起作用。是否有一些工具可以告诉我我需要什么?
答案 0 :(得分:1)
创建一个新的控制台项目(示例名称InspectRefAssm),将其粘贴到其中:
using System;
using System.Reflection;
namespace InspectRefAssm
{
class Program
{
static void Main(string[] args)
{
if (args.Length < 1 || string.IsNullOrEmpty(args[0]))
{
Console.WriteLine("This program requires an argument to the path of the executable.");
Console.WriteLine("Example:");
Console.WriteLine(Path.GetFileName(Assembly.GetEntryAssembly().Location) + @" c:\Path\To\Executable.exe");
Console.ReadKey(true);
return;
}
if (!File.Exists(args[0]))
{
Console.WriteLine("File not found.");
Console.ReadKey(true);
return;
}
Assembly asm = Assembly.LoadFile(args[0]);
foreach (AssemblyName asmName in asm.GetReferencedAssemblies())
{
Console.WriteLine(asmName.FullName);
}
Console.ReadKey(true);
}
}
}
编译它,然后用:
调用它InspectRefAssm.exe&#34; Path \ To \ YourExecutable.exe&#34;
这使用反射来确定可执行文件引用的库。如果您有多个文件属于可执行文件,您可能需要为每个文件运行此文件,或者您可以将其修改为递归文件,我将把它作为练习留给您。
答案 1 :(得分:1)
如果您要发布使用Gtk#/ Mono制作的程序,则需要您的朋友安装Gtk# for Windows。安装完成后,只需复制并执行exe,即可完成。