2013-06-28 26 views
10

Mam aplikację Windows Store korzystającą z przenośnej biblioteki klas z szablonem T4. Kiedy uruchomić transformację nie powiedzie się z powodu następującego błędu:Typ "System.Object" jest zdefiniowany w zespole, do którego nie odwołuje się - Windows Store Application

Compiling transformation: The type 'System.Object' is defined in an assembly 
that is not referenced. You must add a reference to assembly 'System.Runtime, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 

starałem się dodać odwołanie do biblioteki System.Runtime ręcznie, ale mam komunikat „Komponent jest już automatycznie określany przez system kompilacji”

Ta sama biblioteka działa w ramach projektu Silverlight, a także w projekcie Windows Phone.

Czy ktoś ma pojęcie, gdzie jest problem?

Jestem nowy w rozwijaniu aplikacji Windows Store, więc może to być drobny błąd, ale nie mogę znaleźć żadnego rozwiązania.

+0

Niestety nie mogę odtworzyć Twojego błędu. Może mógłbyś udostępnić przynajmniej część nagłówkową swojego szablonu T4? Czy próbowałeś dodać odniesienie do zestawu System.Runtime wewnątrz szablonu (przez dyrektywę <# @ assembly #>), ponieważ odniesienia używane przez szablon są niezależne od odwołań używanych przez jego projekt zawierający. – Nico

Odpowiedz

4

Podsumowanie:

Aby rozwiązać dokładnie ten problem, wystarczy dodać następujące górze szablonu T4:

<#@ assembly name="System.Runtime" #>

Długa odpowiedź:

szablonów T4 są pojęciem kompilacji i dlatego działają w kontekście stosu budowania (tj. .NET Framework 4.5), a nie w kontekście projektu głównego, więc modyfikowanie projektu Store w celu dodania odwołania do System.Runtime nie pomoże.

Zamiast tego, powinieneś mówić T4 o referencji za pośrednictwem samego szablonu. Zwykle jest to obsługiwane automatycznie dla narzędzi, które używają MSBuild, jednak T4 zasadniczo wywołuje kompilatory bezpośrednio i dlatego musi być ręcznie informowany o każdym przenośnym zestawie referencyjnym.

Gdy zaczniesz pisać prawdziwy kod w przenośnej bibliotece, szybko przekonasz się, że musisz dodać dużo więcej referencji; zasadniczo każdy zbiór w% PROGRAMFILES (x86)% \ Assemblies odwołania \ Microsoft \ Framework.NETFramework \ v4.5 \ Fasady. Jeśli robisz to w wielu szablonach, polecam utworzenie pojedynczego include template zawierającego instrukcję montażu dla każdego pliku w powyższym folderze.

1

W moim przypadku (Xamarin Studio) rozwiązaniem było wykonanie czystej kompilacji.

Powiązane problemy