2017-02-13 3 views
2

Ich habe ein Nur-Inhalt-Nuget-Paket erstellt, das dem Projekt, in dem es installiert ist, eine Textdatei hinzufügt. Ich habe das Projekt ohne die Textdatei eingecheckt, wie ich es während nuget restore wiederhergestellt werden möchte. Alles ist gut, bis der CI-Rechner versucht, das Paket wiederherzustellen. Die Wiederherstellung ist erfolgreich, aber die Textdatei wurde nicht hinzugefügt. Anscheinend glaubt nuget, dass die Textdatei bereits existiert, da in der Projektdatei ein Verweis darauf existiert.Content-only Nuget-Paket kann Inhalte nicht wiederherstellen

Wie bekomme ich nugget, um die Textdatei wiederherzustellen?

Im Wesentlichen das Verhalten, das ich möchte, ist das gleiche wie mit DLL-Dateien: Wenn ein Paket installiert ist, werden Verweise auf DLLs zum Projekt hinzugefügt; Wenn das Paket wiederhergestellt wird, werden DLLs so wiederhergestellt, dass sie den Referenzen in der Projektdatei entsprechen. Ich möchte das gleiche Verhalten aber für Textdateien. Ist das möglich?

Antwort

0

Was ich am Ende tut, wie dies die Textdatei in den Ordner der obersten Ebene setzen (ein Ausschnitt aus meinem .nuspec):

</metadata> 
    <files> 
     <file src="dictionary.txt" target="dictionary.txt" /> 
    </files> 
</package> 

Also, wenn das Paket installiert ist, wird die Datei setzt in /packages/MyPackage.0.0.6 und von dem CSPROJ wie so verwiesen:

<ItemGroup> 
    <EmbeddedResource Include="$(SolutionDir)packages\MyPackage.0.0.6\dictionary.txt" /> 
</ItemGroup> 

Dann wird die Datei von CS- wie folgt gelesen:

var stream = Assembly.GetExecutingAssembly() 
      .GetManifestResourceStream(GetType(), "dictionary.txt"); 

Das brachte mir das gewünschte Verhalten: Wenn das Paket wiederhergestellt wird, wird die Datei wiederhergestellt und genau dort abgelegt, wo der Verweis hinweist.

Verwandte Themen