CodeDOM не нашел сборки

Я только что задал вопрос о компиляции с помощью CodeDOM и получил отличный ответ, который решил многие проблемы. Одна проблема, с которой я столкнулся сейчас, заключается в том, как добавить следующие варианты использования в мой компилятор.

System.Diagnostics
&&
Microsoft.Win32

когда я пытаюсь с

CompilerParameters Params = new CompilerParameters();
Params.ReferencedAssemblies.Add("System.Diagnostics.dll");
&&
Params.ReferencedAssemblies.Add("Microsoft.Win32.dll");

(Обратите внимание, что я добавляю system.dll и другие в виде форм и рисунков, также мой код компилируется, если он не использует эти библиотеки)

я получаю следующие ошибки

metadata file System.Diagnostics.dll could not be found

и то же самое для Win32

Если я получу ответ, который сделает мой день, большое спасибо заранее


person FaTaL_ErRoR    schedule 04.01.2013    source источник
comment
Это имена пространств имен, а не имена сборок.   -  person Hans Passant    schedule 05.01.2013


Ответы (2)


Как заметил Ханс Пассант, System.Diagnostics и Microsoft.Win32 являются пространствами имен, а не сборками. Это означает, что System.Diagnostics.dll нет, поэтому вы не можете добавить его в качестве ссылки.

В .Net одна сборка может содержать несколько пространств имен, а одно пространство имен может содержаться в нескольких сборках. Если вы посмотрите документацию по классу, там всегда указано его пространство имен и его сборка. Например, для класса Process это:

Пространство имен: System.Diagnostics
Сборка: System (в System.dll)

person svick    schedule 06.01.2013

Я добился успеха в следующем:

cp.ReferencedAssemblies.Add(typeof(TTarget).Assembly.ManifestModule.FullyQualifiedName);
person Metro    schedule 18.03.2013