Всем доброго времени. Изучая динамическую компиляцию наткнулся на проблему - при добавлении некоторых using в текст кода компилируемой программы, данный код не компилируется, даже если сами классы из новых using не используются. Пример кода который призван компилировать новую программу :
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using Microsoft.CSharp;
using System.Net.Mail; // intellisense считает ненужной
//-----//
Dictionary<string, string> providerOptions = new Dictionary<string, string>
{
{"CompilerVersion", "v3.5"}
};
CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
CompilerParameters compilerParams = new CompilerParameters
{ OutputAssembly = "D:\\Proga.EXE", GenerateExecutable = true };
compilerParams.ReferencedAssemblies.Add("System.Net.Mail");
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
вот строка с кодом который компилируется нормально :
string source =
@"
using System;
namespace PR
{
public class Prog
{
static void Main(string[] args)
{
Send.SayHello();
}
}
public class Send
{
public static void SayHello()
{
}
}
}
Но если мы совсем незначительно изменим программу, например добавим
using System.Net.Mail;
компилятор работать не будет выдав ошибку : Не удалось найти файл метаданных "System.Net.Mail; "
Вопрос : чего не хватает в исходном коде что бы компилировать проект с using'ами кроме System и содержащий классы из них? И второй вопрос : как подключать DLL из WinApi в программу что бы и они компилировались в новом исполняемом файле ?
[DllImport("mydll.dll")]
Вам надо добавить ссылку на сборку, чтобы ее классы были доступны в коде.
Если вы компилируете код через CodeDOM - то ссылки используемые им сборки задаются через CompilerParameters.ReferencedAssemblies
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть DGV,в которую считывается таблица из бд(с помощью класса linq2sql)Визуально это выглядит вот так:
Если значения параметров нулевые - запускается окно настроек, где должен их ввести (сохранения настроек проихводится в SettingsViewModel)Проблема:...
Добрый день, возникла такая проблема: Я использую dll в проекте C#Но когда я пытаюсь запустить exe, он не запускается ( участок кода, который использует...