c# - Kompilerer transformasjon: Typen 'Object' er definert i en samling som ikke er referert
Jeg gjør noen endringer i en asp.Net MVC5-nettapp, hvor jeg brukte typelite for å lage .ts-definisjoner fra C#-klasser (svært praktisk). Av en eller annen grunn får jeg nå denne feilen når jeg kjører T4:
Kompileringstransformasjon: Typen 'Object' er definert i en samling som ikke er referert. Du må legge til en referanse til samlingen 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes'.
og denne advarselen:
Kompilerer transformasjon: Antar at assembly-referansen 'mscorlib, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' brukt av 'EnvDTE' samsvarer med identiteten 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' til 'mscorlib', du kan trenge å angi runtime-policy Mair.Tracking.Web
Jeg antar det er noe relatert til EnvDTE-versjonen som brukes av TypeLite og referansen til mscorlib som EnvDTE bruker. Bør jeg legge til en bindingRedirect i web.config?
Jeg bruker VS2015 med Update2 CTP.
Svar #1
Jeg kan bekrefte at Portable class libraries i kombinasjon med T4-maler forårsaker dette problemet i Visual Studio 2015 Update 2. Jeg klarte ikke å finne en bedre løsning enn å omdirigere TypeLITE til full .NET-rammeverk.
Fra versjon 1.8.0 inneholder TypeLITE nuget-pakken en kopi av biblioteket som retter seg mot full .NET-rammeverk. Hvis prosjektet ditt retter seg mot full .NET-rammeverk, blir den riktige TypeLITE-assemblien hentet under installasjon og alt fungerer fint i Visual Studio 2015 Update 2. Dessverre, hvis prosjektet ditt retter seg mot PCL, er du ute av lykke med Visual Studio 2015 Update 2. Jeg leter etter en bedre løsning.
Svar #2
Takk til Ian Yates for å åpne Connect-innlegget.
Microsoft ga ut KB3151378 på nytt 4. mai 2016. Jeg kan bekrefte at denne oppdateringen løser problemet når T4-maler brukes med EDMX-filer. Dessverre bruker jeg ikke TypeLite, så jeg kan ikke bekrefte at den løser spørsmålet til OP, selv om jeg ville mistenke at den gjør det.
Fra KB-siden:
Utgave 6:
I T4-maler oppstår det feil når du refererer til en samling som er bygget for en versjon av .NET Framework som skiller seg fra skrivebordet (full) rammeverk. For eksempel oppstår det feil når du refererer til bærbare biblioteker.