2015-11-16 6 views
2

У меня есть фрагмент кода в одном из моих проектов, который выводит .dll из данного файла .cs.PCL DomCompiler Portable Class Library output

Теперь я хотел бы выпустить переносимую библиотеку классов вместо стандартной библиотеки, но понятия не имею, как изменить тип вывода.

Я читал, что выходной тип - это просто часть .csproj, но у меня нет .csproj с таким способом компиляции в .dll.

CSharpCodeProvider provider = new CSharpCodeProvider(); 
    CompilerParameters cp = new CompilerParameters(); 
    cp.OutputAssembly = "myassemblyname.dll"; 
    cp.GenerateInMemory = false; 
    cp.IncludeDebugInformation = true; 
    CompilerResults cr = provider.CompileAssemblyFromFile(cp, new String[] { "MySourceFile.cs", codeFile }); 

    if(cr.Errors.Count > 0) { 
     Console.WriteLine("Errors building {0}", cr.PathToAssembly); 
     foreach(CompilerError ce in cr.Errors) { 
      Console.WriteLine(" {0}", ce.ToString()); 
      Console.WriteLine(); 
     } 
    } 
    else 
     Console.WriteLine("Source {0} built into {1} successfully.", codeFile, cr.PathToAssembly); 
} 

Кто-нибудь есть идея Howto проинструктировать CSharpCodeProvider для вывода Портативный библиотеки классов (PCL)

ответ

1

Согласно this ответ, вы должны просто pass the right assembly referencesCompilerParameters до и setCompilerParameters.GenerateExecutable свойство ложно для создания библиотеки DLL.

Чтобы выяснить правильные ссылки, вы можете создать PCL через IDE и просто посмотреть окно вывода.

+0

Попробуем завтра и отметьте, если это сработает, спасибо! –

0

В итоге мы переключили этот метод построения конкретного проекта, где теперь он просто следует за .csproj. Но наши тесты с добавлением правильных CompilerParameters.ReferencedAssemblies, похоже, сработали, так что они отмечены как ответ.

20: 20-backindight-remark: Создание кода и запрос сборки для компиляции проекта теперь кажутся менее головной болью .. в то же время не очень плохие интерфейсы.

Смежные вопросы