Вопрос по merge, c#, dll – Слить DLL в EXE?

50

У меня есть два DLL-файла, которые я хотел бы включить в свой EXE-файл, чтобы его было легче распространять. Я кое-где прочитал, как это сделать, даже нашел хорошую веткуВот, а такжеВот, но это слишком сложно для меня, и мне нужны реальные базовые инструкции о том, как это сделать.

Я использую Microsoft Visual C # Express 2010 и прошу прощения за мой "низкий стандарт" вопрос, но я чувствую, что я на один или два уровня ниже опыта всех остальных: - / Если бы кто-то мог указать, как объединить эти файлы DDL в мой EXE-файл в пошаговом руководстве, это было быreally классно!

Ваш Ответ

13   ответов
0

I Found The Solution Below are the Stpes:-

Download ILMerge.msi and Install it on your Machine. Open Command Prompt type cd C:\Program Files (x86)\Microsoft\ILMerge Preess Enter ILMerge.exe /target:winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName.dll

For Multiple Dll :-

C: \ Program Files (x86) \ Microsoft \ ILMerge & gt; ILMerge.exe / target: winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName1.dll DllName2.dll DllName3.dll

5
static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
    /* PUT THIS LINE IN YOUR CLASS PROGRAM MAIN() */           
        AppDomain.CurrentDomain.AssemblyResolve += (sender, arg) => { if (arg.Name.StartsWith("YOURDLL")) return Assembly.Load(Properties.Resources.YOURDLL); return null; }; 
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

quot; Ресурсы & quot;

2

ilmergertoolв codeplex с интерфейсом GUI.

10

ILMerge

Вызов

ilmerge /target:winexe /out:c:\output.exe c:\input.exe C:\input.dll
Error: User Rate Limit Exceededilmerge /target:winexe my_exe.exe my_dll.dll /out:merged.exe Momro
Error: User Rate Limit Exceededilmerge /target:winexe /target:platform:"v4,c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" /out:merged.exe my_exe.exe my_dll.dllError: User Rate Limit Exceeded Momro
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded/target:winexe /target platform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"Error: User Rate Limit Exceeded
16

solve-Event для возврата Resource-DLL.

public partial class App : Application
{
    public App()
    {
        AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
        {

            Assembly thisAssembly = Assembly.GetExecutingAssembly();

            //Get the Name of the AssemblyFile
            var name = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll";

            //Load form Embedded Resources - This Function is not called if the Assembly is in the Application Folder
            var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(name));
            if (resources.Count() > 0)
            {
                var resourceName = resources.First();
                using (Stream stream = thisAssembly.GetManifestResourceStream(resourceName))
                {
                    if (stream == null) return null;
                    var block = new byte[stream.Length];
                    stream.Read(block, 0, block.Length);
                    return Assembly.Load(block);
                }
            }
            return null;
        };
    }
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Momro
Error: User Rate Limit Exceeded Momro
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
-2

ilmerge myExe.exe Dll1.dll /target:winexe /targetplatform:"v4,c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" /out:merged.exe /out:merged.exe
82

ILMerge.exe /target:winexe /targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /out:finish.exe insert1.exe insert2.dll

ILMerge

Open CMD and cd to your directory. Let's say: cd C:\test Insert the above code. /out:finish.exe replace finish.exe with any filename you want. Behind the /out:finish.exe you have to give the files you want to be combined.
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededProgram Files (x86)Error: User Rate Limit Exceeded/target:exeError: User Rate Limit Exceeded
Error: User Rate Limit ExceededILMerge.exe /target:winexe /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /out:finish.exe myExe.exe mfc100u.dll mfc110u.dll msvcp110.dllError: User Rate Limit ExceededAn exception occurred during merging: ILMerge.Merge: Could not load assembly from the location 'C:\test\my folder\mfc 100u.dll'. Skipping and processing rest of arguments.Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Momro
0

Я ответил на аналогичный вопрос дляVB.NET, Однако он не должен быть слишком сложным для преобразования. Вы встраивалиDLL's в вашRessource папку и при первом использовании AppDomain.CurrentDomain.AssemblyResolve событие начинается.

Если вы хотите ссылаться на него во время разработки, просто добавьте нормальныйDLL ссылка на ваш проект.

Вставить DLL в проект

0

официальная документация, Это также автоматически загружается на шаге 2.

Ниже приведен действительно простой способ сделать это, и я успешно построил свое приложение, используя.NET framework 4.6.1

Install ILMerge nuget package either via gui or commandline:

Install-Package ilmerge

Verify you have downloaded it. Now Install (not sure the command for this, but just go to your nuget packages): enter image description here Note: You probably only need to install it for one of your solutions if you have multiple

Navigate to your solution folder and in the packages folder you should see 'ILMerge' with an executable:

\FindMyiPhone-master\FindMyiPhone-master\packages\ILMerge.2.14.1208\tools

enter image description here

Now here is the executable which you could copy over to your \bin\Debug (or whereever your app is built) and then in commandline/powershell do something like below:

ILMerge.exe myExecutable.exe myDll1.dll myDll2.dll myDlln.dll myNEWExecutable.exe

Теперь у вас будет новый исполняемый файл со всеми вашими библиотеками в одном!

15

Costura.Fody.

Вы просто должныinstall the NuGet а затем сделать сборку, Окончательный исполняемый файл будетstandalone.

Error: User Rate Limit ExceededInstall-Package Costura.FodyError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededFodyError: User Rate Limit ExceededMono.CecilError: User Rate Limit ExceededFodyError: User Rate Limit Exceeded
8

Install ILMerge

Then go to the installation folder, by default C:\Program Files (x86)\Microsoft\ILMerge

Drag your Dll's and Exes to that folder

Shift-Rightclick in that folder and choose open command prompt

Write

ilmerge myExe.exe Dll1.dll /out:merged.exe

Note that you should write your exe first.

Там вы получили свой объединенный exe. Это может быть не лучшим способом, если вы собираетесь сделать это несколько раз, но самый простой для одноразового использования, я бы рекомендую поставить Ilmerge на свой путь.

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededilmergeError: User Rate Limit Exceeded>ilmerge myExe.exe mfc100u.dll mfc110u.dll /out:final.exeError: User Rate Limit ExceededAn exception occurred during merging: ILMerge.Merge: Could not load assembly from the location 'C:\test\my folder\mfc 100u.dll'. Skipping and processing rest of arguments.Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededmfc100u.dllError: User Rate Limit ExceededdllError: User Rate Limit ExceededILMerge GUIError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

отличную от ILOnly, то

Assembly.Load(block)

не будет работать, и будет выдано исключение: больше деталей

Я преодолел это, создав временный файл и используя

Assembly.LoadFile(dllFile)
25

СкачатьILMerge а такжеilmergre gui , облегчает объединение файлов я использовал их и прекрасно работает

Похожие вопросы