gebrochen Ich habe eine Design-Zeit T4-Vorlage, die seit Jahren in VS2013 und VS2015 gearbeitet hat.T4-Baugruppe Richtlinie in Visual Studio 2017
In VS2017 kann die Vorlage nicht mit einer MissingMethodException ausgeführt werden. Die fragliche Methode befindet sich in einer benutzerdefinierten Assembly. Die Assembly wird mit einem absoluten Pfad zusammen mit dem Makro $ (SolutionDir) referenziert. So etwas wie:
<#@ assembly name="$(SolutionDir)path\my.dll"#>
Ich habe den Fusion Log Viewer verwendet, um dieses Problem zu debuggen. Anscheinend "my.dll" kann nicht gefunden werden. Und gemäß den Protokollen sucht Visual Studio nicht im absoluten Pfad.
Ich nehme an, dies ist ein Fehler innerhalb der T4VSHost. Gibt es da eh eine Lösung oder Abhilfe?
Um dieses Problem zu umgehen, platziere ich meine.dll im "my" -Unterverzeichnis von $ (DevEnvDir). Persönlich halte ich das für eine schlechte Praxis. Aber Fusion wird es so finden. Ich würde es vorziehen, es irgendwo verantwortungsvoller zu platzieren und Fusion anweisen, wo es zu finden ist. –
Kann der Dateipfad hartcodieren? – qxg
@qxg, schlägst du vor, dass etwas mit dem Makro (oder der Makroexpansion) nicht stimmt? Anscheinend ist das nicht das Problem. Ich habe den Weg festgeschrieben, um die Theorie zu testen - nein. –