Come includere file resx in un pacchetto Nuget
Ho un progetto .Net Framework 4.6.1 da cui realizzo un pacchetto nuget. Questo pacchetto nuget installa semplicemente 2 dll e un paio di file di contenuto che funzionano bene.
Il problema è che ora ho aggiunto una stringa di risorse tramite un file resx che risiede in:
~\App_Data\Global\Resources\resource-strings.resx
E non so come fare in modo che quel file faccia parte correttamente del pacchetto nuget. Quando creo il .nupkg, vedo il file resx lì, ma quando lo installo su un altro progetto, il file resx dovrebbe essere copiato nella cartella App_Data \ Global \ Resources, ma non lo è.
È possibile?
Da quello che ho studiato, penso di dover fare qualcosa anche con i file di destinazione + configurazione nuspec, ma niente di ciò che ho provato funziona.
Ho letteralmente solo bisogno di copiare il file resx. Niente di più complicato di quello.
Risposte
Certo . È possibile e può essere fatto da nuget. Poiché desideri che questo file di risorse venga copiato nella cartella del progetto asp net di destinazione, puoi provare i seguenti passaggi:
================================================== ===
Innanzitutto , se si desidera installare questo net461
pacchetto nuget in un net framework
progetto asp net, è necessario utilizzare il nodo del contenuto nel xxx.nusepc
file
Innanzitutto, assicurati che l' azione di compilazione di resource-strings.resx sia Risorsa incorporata anziché Contenuto .
1) prima , esegui cmd command: cd xxxx(project folder path)
e poi esegui nuget spec
per generare il file nuspec. Questi sono sufficienti:
2) apri il nuspec
file e aggiungi il nodo del contenuto:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>xxx</id>
<version>xxx</version>
<title>xxx</title>
<authors>xxx</authors>
............
</metadata>
<files>
<file src="~\App_Data\Global\Resources\resource-strings.resx(the path of the file in net framework 4.6.1 project)" target="content\App_Data\Global\Resources\resource-strings.resx" />
</files>
</package>
3) quindi salva il nuspec
file ed esegui nuget pack
per generare il file nupkg
.
Prima di installare il pacchetto nuget, devi prima pulire le cache di nuget per rimuovere le vecchie versioni sbagliate del nuget.
Quando installi questo pacchetto, il file verrà copiato nel percorso radice App_Data\Global\Resources\resource-strings.resx
del progetto web.
================================================== ==
Se si desidera installare questo pacchetto in un nuovo progetto sdk (Net Core o xxx con il formato di gestione nuget PackageReference), è possibile creare un file di destinazione con un'attività di copia.
1) aggiungi una cartella chiamata build nel progetto net framework 4.6.1 e poi aggiungi un file chiamato <Package_id>.props
file.
Nota che dovresti assicurarti che l'ID del pacchetto nuget sia lo stesso del <Package_id>.props
. Suggerimento da qui .
2) aggiungili in <Package_id>.props
:
<Project>
<Target Name="CopyFilesToProject" BeforeTargets="Build">
<Message Text="Copy resource-strings.resx to project" />
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..\content\**\*.*"/> </ItemGroup> <Copy SourceFiles="@(SourceScripts)" DestinationFiles="$(MSBuildProjectDirectory)\%(RecursiveDir)%(Filename)%(Extension)"/>
</Target>
</Project>
3) Modifica il xxx.nuspec
file in questo modo:
<?xml version="1.0"?>
<package >
<metadata>
<id>xxx</id>
<version>xxx</version>
<title>xxx</title>
<authors>xxx</authors>
<owners>me</owners>
............
</metadata>
<files>
<file src="~\App_Data\Global\Resources\resource-strings.resx" target="content\App_Data\Global\Resources\resource-strings.resx" />
<file src="build\xxx(like package_id).props" target="build"/>
</files>
</package>
4) quindi dovresti usare il nuget pack
comando per impacchettare questo progetto. Prima di installare questo pacchetto, è necessario prima pulire le cache nuget.
Dopo aver installato questo pacchetto nuget, è necessario creare il progetto per eseguire questa destinazione di copia personalizzata per copiare il file nel progetto principale.
Inoltre , c'è un problema simile su questo.