Проект библиотеки классов C #, который может создавать множество dll [duplicate]

Неправильная практика выбора всех тегов формы в вашем коде, что, если на странице есть несколько форм? Также вам лучше использовать .on() и .off() с jQuery.

$(document).ready(function() {
    $('form').on('submit', function(e) {
        e.preventDefault();

        // cache the current form so you make sure to only have data from this one
        var form = this,
            $form = $(form);

        $.ajax({
            url: form.action,
            type: form.method,
            data: $form.serialize(),
            success: function(data) {
                if (data == 'true')
                {
                    $form.attr('action', 'http://example.com').off('submit').submit();
                }
                else
                {
                    alert('Your username/password are incorrect');
                }
            },
            error: function() {
                alert('There has been an error, please alert us immediately');
            }
        });
    });
});
29
задан Eric Dand 11 November 2014 в 03:41
поделиться

3 ответа

using System.CodeDom.Compiler;
using System.Diagnostics;
using Microsoft.CSharp;

CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "AutoGen.dll";
CompilerResults results = icc.CompileAssemblyFromSource(parameters, yourCodeAsString);

Адаптировано из http://support.microsoft.com/kb/304655

37
ответ дан Rex M 22 August 2018 в 07:36
поделиться
  • 1
    Примечание. В более старых версиях этого кода есть дополнительная строка кода, которая создает компилятор у поставщика с помощью CSharpCodeProvider.CreateCompiler (). Это устарело, вы должны вызвать компиляцию непосредственно у провайдера. – Andrew Hill 28 December 2017 в 23:21

Не устаревший способ сделать это (используя .NET 4.0 в качестве предыдущих плакатов):

using System.CodeDom.Compiler;
using System.Reflection;
using System;
public class J
{
    public static void Main()
    {       
        System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
        parameters.GenerateExecutable = false;
        parameters.OutputAssembly = "AutoGen.dll";

        CompilerResults r = CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(parameters, "public class B {public static int k=7;}");

        //verify generation
        Console.WriteLine(Assembly.LoadFrom("AutoGen.dll").GetType("B").GetField("k").GetValue(null));
    }
}
29
ответ дан Lars A. Brekken 22 August 2018 в 07:36
поделиться
  • 1
    Если вы используете parameters.GenerateInMemory = true;, вы можете получить сборку в памяти с помощью r.CompiledAssembly – George Helyar 28 February 2017 в 12:15

Прямо сейчас, ваш лучший выбор - CSharpCodeProvider ; в планы 4.0 входит «компилятор как услуга», который сделает это полностью управляемым.

3
ответ дан Marc Gravell 22 August 2018 в 07:36
поделиться
  • 1
    заголовок темы «генерация-dll-сборка-динамически-на-время-времени». НЕ "генерация-EXE-сборка-динамически при запуске" ваше описание ссылки abut создает exe во время выполнения. – Amin Ghaderi 1 April 2015 в 08:30
  • 2
    @AminGhaderi и кто сказал что-нибудь об exe? Если вы имеете в виду & quot ;, но образец кода в MSDN создает exe & quot; - он также с удовольствием создаст DLL; в конечном счете, пакет файлов not интересная часть сборки – Marc Gravell♦ 1 April 2015 в 08:31
Другие вопросы по тегам:

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