Potrzebuję dodać i/lub zmodyfikować profile, aby umożliwić udostępnianie większej liczby klas i członków w PCL (wiele z nich jest wbudowanych w strukturę, na przykład Thread.Sleep). Jaki jest najlepszy sposób na zrobienie tego? Czy są jakieś narzędzia, aby temu zaradzić?
PS: Nie jestem szukając anwser do powiedzenia NO czy zatrzymać. Chcę mieć skompilowane biblioteki DLL, które mogą być udostępniane w innym środowisku. Bez plików binarnych na platformę, bez rekompilacji, bez ifdef.
Oto co mam do tej pory:
Dostosowywanie .NET Portable Class Library Profiles?
Wymagania:
- docelowe environements: Silverlight 5 i .NET Framework 4.5.
- Cel PCLS: wspólne infrastruktury przez klienta i serwera ASP.NET RIA (bez WCF)
- Co brakuje w domyślnych profili: XPath, metod nici, DynamicMethod/ILGenerator
profili PCL: pod referencyjny zwoje \ Microsoft \ Framework.NETPortable:
- Wszystkie zespoły są odcinki, z "zmiennocelowym" zestawu atrybutów.
- Wszystkie zespoły mają flagi = 0x171: 0x001 jest podpisana, jest zmiennocelowym 0x100 i 0x070 jest niezdefiniowane w AssemblyNameFlags (wydaje się nie mieć wpływu)
- Wszelkie odniesienia między zespołami są w „zmiennocelowym” atrybutów, jak również.
- Wszystkie zespoły z obsługą Silverlight mają wersję 2.0.5.0.
- zabudowy binarne PCL zawierają dwie referencje dla każdego z określonych zespołów (ex: mscorlib 2.0.5.0 zmiennocelowym + mscorlib 4,0)
Dostosowanie próba # 1
- Profil: Silverlight 5 +. NET Framework 4.5 (profil 24)
- Skopiuj SL5 mscorlib.dll do profilu 24
- Mark SL5 mscorlib.dll jako retargetable (zmiana na opóźnione podpisane)
- ReSharper: nie udało się rozwiązać wszystkie metody rozszerzenie, błąd w typ rodzajowy/wartości meczu
- Budowa: sukces, uruchom: sukces
Dostosowanie próba # 2
- Profil: Silverlight 5 + .NET Framework 4.5 (profil 24)
- Skopiuj wszystkie pliki DLL SL5 do profilu 24
- Oznacz wszystko SL5 DLL jako zmiennocelowym (zmiana opóźnienia podpisany)
- Oznacz wszystkie odnośniki między SL5 DLL jak zmiennocelowym
- ReSharper: nie udało się rozwiązać wszystkie metody przedłużania, błąd w typ rodzajowy/wartości meczu
- Budowa: sukces, uruchom: sukces
Dostosowanie próba nr 3
- Profil: Silverlight 4 + .NET Framework 4.0.3 (profil 18)
- Kopiowanie SL4 mscorlib.dll do profilu 18
- Mark SL4 pliku Mscorlib.dll jak zmiennocelowym (zmiany opóźnienia podpisany)
- ReSharper: sukces
- Budowa: sukces, Run: sukces
Dostosowanie próba nr 4
- Profil: Silverlight 4 + .NET Framework 4.0.3 (profil 18)
- Kopiuj wszystko SL4 DLL do profilu 18
- zestaw wersję .NET wykonania wszystkich bibliotek DLL SL4 V4 (oryginalne DLL mają, że brak efektów)
- Oznacz wszystko SL4 DLL jako zmiennocelowym (zmiana opóźnienia podpisany)
- Oznacz wszystkie odnośniki między SL4 DLL jak zmiennocelowym
- ReSharper: sukces
- Budowa: sukces, Run: sukces
Dostosowanie próba # 5 dziedziczą # 4
- Profil: Silverlight 4 + .NET Framework 4.0.3 (profil 18)
- Dodaj System.Numerics SL4 za (ujęte w innych profilach SL) do RedistList \ FrameworkList.xml
- Dodaj SL4 za System.Xml.XPath (nieuwzględnione w dowolnych profili SL) do RedistList \ FrameworkList.xml
- Wynik: nie można rozwiązać System.Numerics i System.Xml.XPath z def ault PCL odwołuje
- rozwiązania: porównawczą DLL ręcznie - nie można zmusić się zmiennocelowym jednak VS nie kompilacji z nie zmiennocelowym System.Numerics lub System.Xml.XPath uwagi na wspomniany problem poniżej
Uwagi:
- błąd kompilacji: „... zdefiniowane w zespole, który nie jest odwołanie, należy dodać odwołanie do montażu”.Dzieje się po wszystkie zespoły są zmiennocelowym ale odniesień między nimi nie jest zmieniony na „zmiennocelowym”
To działa do pewnego stopnia, ale dość kłopotliwe, aby dostosować istniejący odwołuje DLL lub dodawać nowe, nie można łatwo sprawdź kod PCL po przesłonięciu odwołujących się bibliotek DLL (jeśli to możliwe).
Wiem, że nie szukasz * odpowiedzi, która po prostu ci przerwie, ale pomysł, że możesz wybrać i wybrać, które części frameworka chcesz dołączyć, i po prostu zadziała, naprawdę nie jest rozsądny. Nawet jeśli znajdziesz jakiś niezręczny sposób na to, żeby to zadziałało do pewnego stopnia, prędzej czy później zostaniesz odblokowany - w którym to momencie zmarnujesz dużo czasu. –
Ale to tylko niewygodne, bez odpowiedniego wsparcia narzędzi. Jeśli istnieje narzędzie do generowania plików pośredniczących dla referencji, byłoby całkiem dobrze. – AqD
Zakładasz, że masz wystarczającą świadomość tego, co jeszcze jest wymagane, aby obsługiwać te interfejsy API ... wszystkie zależności pod względem zarówno natywnego kodu, jak i innego zarządzanego kodu. Nie sądzę, żeby było tak proste, jak się tego spodziewasz. –