To jest bardzo prosty kod, który generuje bibliotekę dll, do której można odwoływać się z przenośnej biblioteki klas, ale jest to podatny błąd, ponieważ po dodaniu dowolnego odwołania przyjmuje niemobilne odniesienia. Jak mogę powiedzieć na pewno, że to, co usiłuję do generowania jest na przenośnym profilu ?, Oto kod:Czy można utworzyć przenośną bibliotekę zajęć z Roslyn?
using System.IO;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
namespace Ros1
{
class Program
{
static void Main(string[] args)
{
SyntaxTree tree = SyntaxTree.ParseText(
@"using System;
namespace HelloWorld
{
public class A
{
public int Sum(int a, int b)
{
return a + b;
}
}
}");
var co = new CompilationOptions(OutputKind.DynamicallyLinkedLibrary);
var compilation = Compilation.Create("HelloWorld", co)
.AddReferences(MetadataReference.CreateAssemblyReference("mscorlib"))
.AddSyntaxTrees(tree);
using (var file = new FileStream("Sum.dll", FileMode.Create))
{
compilation.Emit(file);
}
}
}
}
Dziękuję Immo, przypuszczam, że to działa podobnie do Silverlight, a co jeśli chcę wygenerować montaż na kliencie, Czy Roslyn będzie mógł skompilować się w Silverlight? –
Aby skompilować sterownik PLC, potrzebne są zestawy referencyjne. Biorąc pod uwagę, że zespoły referencyjne wymagają pakietu docelowego lub Visual Studio do zainstalowania, zasadniczo wymaga to komputera programisty. Więc w ogólnym przypadku powiedziałbym, że odpowiedź brzmi "nie". Dlaczego chcesz skompilować PCL na kliencie? Wydaje się, że jeśli ten zestaw jest używany tylko na kliencie, może to być również specyficzne dla platformy, tzn. Możesz skompilować bezpośrednio przeciwko Silverlight. –
Tak, moja aplikacja poza przeglądarką ma już wszystkie biblioteki DLL potrzebne do kompilacji, w tym pakiet do targetowania asyc lub jakiekolwiek inne. Powodem, dla którego potrzebuję kodu skompilowanego dynamicznie, jest to, że istnieją pewne reguły sprawdzania poprawności, które pochodzą z serwera. Obecny stan Roslyn wydaje się na wpół wypieczony (jestem pewien, że Eric Lippert chce złamać nogi), jeśli nie ma możliwości skompilowania się na kliencie. –