Моя проблема выглядит так:
Есть проект под названием myframework
. Он имеет несколько методов расширения, определенных в нем следующим образом:
namespace myframework
{
public static class Helpers
{
public static bool ContainsAll(this string obj, string[])
{
return true;
}
}
}
У него также есть некоторые другие вещи, такие как интерфейсы и т. Д. И т. Д.
Есть второй класс, который я генерирую через классы System.CodeDom. Сгенерированный вывод выглядит примерно так:
using myframework;
public class A: IMyFrameworkInterface
{
public void foo()
{
string s ="HELLO";
if(s.ContainsAll(some_arr))
return;
}
//More methods defined...
}
Параметры компилятора, которые я передаю, которые создаются до фактического вызова компиляции, ссылаются на правильные сборки.
var cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("myframework.dll");
Модули компиляции кода написаны в другом проекте. Конкретный класс, отвечающий за это, также дает нам доступ к списку объектов CompilerError, с помощью которых мы можем узнать результат компиляции.
Проблема 1: когда я попробовал это в проекте asp.net, компилятор выдал ошибку, говоря, что не может найти файл метаданных myframework.dll (несмотря на то, что он упоминается в проекте).
Проблема 2: когда я попробовал это с проектом Windows Forms. Выдавало другую ошибку. На этот раз говорится, что строка не содержит определения для ContainsAll()
Как решить эти две конкретные проблемы?
Add()
? - person deostroll   schedule 28.05.2013