Как ссылаться на библиотеку из сборки сборки? - PullRequest
0 голосов
/ 28 января 2019

У меня есть приложение, ссылающееся, скажем, на DLL 1 и DLL 2.

В приложении конечный пользователь может написать некоторый код для некоторых пользовательских функций.

Внутри моего приложения я компилирую его код, используя:

// User's code
string code = @" ** User's code ** ";

// Create the provider
CSharpCodeProvider provider = new CSharpCodeProvider();

// Create the parameters
CompilerParameters parameters = new CompilerParameters();

// Compile the user's code 
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);

Перед компиляцией я хотел бы добавить некоторые ссылки, которые уже используются в моем приложении, это DLL 1 и DLL 2 (чтобы позволить пользователю использовать некоторые из моих функций).

Я пытался использовать GetExecutingAssembly, но он возвращает основную сборку приложения, и я не могу найти, как получить DLL 1 и DLL 2.

Assembly.GetExecutingAssembly

Я не знаю пути к DLL, поэтому следующая инструкция не будет работать:

parameters.ReferencedAssemblies.Add("C:\DLL1.dll");

Кто-нибудь знает, как решить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 28 января 2019

Местоположение сборки можно получить из типа, определенного в этой сборке.Таким образом, в ваших CompilerParameters вы можете ссылаться на них так:

new CompilerParameters
{
    ReferencedAssemblies =
    {
        typeof(MyDll1.Type1).Assembly.Location,
        typeof(MyDll2.Type2).Assembly.Location
        //, etc
    }
    //, etc
}
...