Ist es möglich, Paketverweise wie Microsoft.CodeAnalysis innerhalb einer Microsoft Build Task zu verwenden, die mit dotnet build ausgeführt wird?Zugriff auf Paketreferenzen innerhalb einer Aufgabe für dotnet build
Ich verwende netstandard1.5
für die Task-Bibliothek und die folgenden Paket Referenzen:
<PackageReference Include="Microsoft.Build" Version="15.3.0-preview-000117-01" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.3.0-preview-000117-01" />
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="2.2.0" />
Das aufwändige Projekt ein netcoreapp1.1
ist. Die Aufgabe schlägt mit einer
The "MyTask" task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. File name: 'Microsoft.CodeAnalysis, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
Ausnahme.
Beim Versuch, das Paket Referenz über AssemblyLoadContext.Default.LoadFromAssemblyPath
zu laden ich
Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
ohne weitere Informationen. Dies funktioniert auch nicht, wenn Sie in einer .net-Kernkonsolenanwendung ausgeführt werden. Ich versuchte ein zweites (einfacheres) Paket, das über LoadFromAssemblyPath
in einer .net Kernkonsolenanwendung geladen werden kann, aber es funktioniert immer noch nicht, wenn es als dotnet build Task ausgeführt wird.
Beide Baugruppen können geladen werden, wenn sie in klassischen net4.6 mit Assembly.LoadFile
in einer Konsolenanwendung und wenn als Task ausgeführt werden.
Danke für Ihre Antwort. Ich habe meine Frage modifiziert, um generischer zu sein. Irgendeine Idee, warum 'AssemblyLoadContext.Default.LoadFromAssemblyPath' nicht funktioniert, wenn es als dotnet Build Task ausgeführt wird? – Dresel