ОГРОМНЫЕ проблемы с использованием компилятора CodeDom, не могут использовать пространства имен в динамическом коде - PullRequest
1 голос
/ 16 марта 2011

Я пытаюсь создать динамически сгенерированный код на основе пользовательского ввода (как мини-компилятор).Но моя проблема в том, что мне нужно использовать сборку PresentationFramework.dll внутри динамического кода, и я не знаю, как ссылаться на нее.

Я уже пробовал Assembly.Load() и Assembly.Loadfrom().Но все, что я получаю, это сообщение об ошибке:

«Сборка не найдена»

Я привык делать это с IDE (ссылки правой кнопкой мыши, а затем добавить),но теперь мне нужно найти способ сделать это с помощью кода.

Мне нужна сборка, чтобы использовать System.Windows.Shell для создания пользовательских списков переходов.

Это не просто для этой конкретной сборки, но для нескольких других тоже.Но это самое важное, поэтому, если бы кто-то мог помочь мне с этим, я был бы благодарен.

Итак, базовая линия такова: мне нужно использовать пространство имен System.Windows.Shell.Мне нужно ссылаться на это пространство имен полностью через код (без IDE).Как это может быть сделано?И возможно ли это вообще?

Я использую Visual Studio 2010 Ultimate (C #).

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Это зависит от версии PresentationFramework, которую вы хотите, когда вам нужно добавить ее в качестве ссылки. В основном вы найдете это в:

\Program File\Reference Assemblies\Microsoft\Framework

(для 64-битной компиляции или 32-битной в 32-битной ОС)

или

\Program File (x86)\Reference Assemblies\Microsoft\Framework

(для 32-битной компиляции или 32-битной в 64-битной ОС)

Это только корневые папки. Отсюда вы можете перейти, например, в «v3.0» или «.NETFramework \ v4.0», например.

Так что вам просто нужно добавить ссылку на полный «[путь] \ PresentationFramework.dll» вместо просто «PresentationFramework.dll», например:

"C:\Program File\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\PresentationFramework.dll".
0 голосов
/ 16 марта 2011

Вот ответ прямо из MSDN :

Если ваш проект ссылается на какие-либо сборки, вы должны указать имена сборок как элементы в StringCollection как свойство ReferencedAssemblies объектаПараметры компилятора, которые вы используете при запуске компиляции.

...