Ich habe ein nugget-Paket, das von mehreren anderen abhängt (z. B. Newtonsoft.Json
). Paket ist nicht verwenden, wie eine Klassenbibliothek soll es nur benutzerdefinierte MSBuild Aktion fügt so die Struktur des Pakets so aussieht:Referenzieren von nuget-Paketen aus dem nugget-Paket
-package CustomBuildAction
|-lib/net45/CustomBuildAction.dll
|-build/CustomBuildAction.targets
Wenn ich das Paket CustomBuildAction.targets
installieren richtig referensed von csproj aber wenn ich bin versuchen, Build auszuführen, bekomme ich einen Fehler, der:
Die "CustomBuildAction" Task konnte nicht aus Assembly "Pfad zu dll/CustomBuildAction.dll" geladen werden. Die Datei oder Assembly 'Newtonsoft.Json.dll, Version = ...' oder eine ihrer Abhängigkeiten konnte nicht geladen werden.
Ich habe Newtonsoft.Json.dll
in Nuspec-Datei als eine Paketabhängigkeit enthalten, Nugget zeigt es als eine Abhängigkeit, aber MSBuild kann es nicht auflösen. Für mich ist es wie das Problem aussieht, ist, dass ich CustomBuildAction.dll
aus .targets-Datei mit relativem Pfad bin Referenzierung (relative Ordner zu bauen) in Paketen Ordnern, dh:
../lib/net45/CustomBuildAction.dll
Aber diese DLL ist nicht platziert werden soll in den Build-Output-Ordner, wo es alle seine Abhängigkeiten finden könnte. Wie kann ich dieses Problem beheben? Sollte ich Abhängigkeiten direkt in das Paket aufnehmen oder gibt es eine andere Möglichkeit, es zu lösen?
Muss das Projekt auf die CustomBuildAction.dll verweisen, wenn es nur von der benutzerdefinierten MSBuild-Aktion verwandt wird? Ich würde es einfach im Build-Verzeichnis neben der .targets-Datei haben und dann von dort importieren. Dann haben Sie die Newtonsoft.Json.dll im Build-Verzeichnis zu. –
@Matt Ward nein, es ist nicht notwendig, es als Referenz in das Projekt einzufügen. Wird versuchen, dll in Build-Ordner zu verschieben, interessante Idee – Leo