Comment inclure un fichier resx dans un package Nuget
J'ai un projet .Net Framework 4.6.1 à partir duquel je crée un package nuget. Ce package nuget installe simplement 2 dll et quelques fichiers de contenu qui fonctionnent correctement.
Le problème est que j'ai maintenant ajouté une chaîne de ressources via un fichier resx qui réside dans:
~\App_Data\Global\Resources\resource-strings.resx
Et je ne sais pas comment intégrer correctement ce fichier au package nuget. Lorsque je crée le .nupkg, je vois le fichier resx là-bas, mais lorsque je l'installe sur un autre projet, le fichier resx doit être copié dans le dossier App_Data \ Global \ Resources, mais ce n'est pas le cas.
C'est possible?
D'après ce que j'ai étudié, je pense que je dois aussi faire quelque chose avec les fichiers cibles + la configuration nuspec, mais rien de ce que j'ai essayé ne fonctionne.
J'ai juste besoin de copier le fichier resx. Rien de plus compliqué que ça.
Réponses
Bien sûr . C'est possible et peut être fait par nuget. Puisque vous souhaitez que ce fichier de ressources soit copié dans votre dossier de projet asp net cible, vous pouvez essayer les étapes suivantes:
=================================================== ===
Tout d'abord , si vous souhaitez installer ce net461
package nuget dans un net framework
projet asp net, vous devez utiliser le nœud de contenu dans le xxx.nusepc
fichier
Tout d'abord, assurez-vous que l' action de génération de resource-strings.resx est Ressource intégrée plutôt que Contenu .
1) d' abord , exécutez la commande cmd: cd xxxx(project folder path)
puis exécutez nuget spec
pour générer le fichier nuspec. Celles-ci suffisent:
2) ouvrez le nuspec
fichier et ajoutez le nœud de contenu:
<?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) puis enregistrez le nuspec
fichier et exécutez nuget pack
pour générer le fichier nupkg
.
Avant d'installer le package nuget, vous devez d'abord nettoyer les caches nuget pour supprimer les anciennes versions incorrectes du nuget.
Lorsque vous installez ce package, le fichier est copié dans le chemin racine App_Data\Global\Resources\resource-strings.resx
du projet Web.
=================================================== ==
Si vous souhaitez installer ce package dans un nouveau projet sdk (Net Core ou xxx avec le format de gestion de nuget PackageReference), vous pouvez créer un fichier cible avec une tâche de copie.
1) ajoutez un dossier appelé build dans le projet net framework 4.6.1, puis ajoutez un fichier appelé <Package_id>.props
file.
Notez que vous devez vous assurer que l'ID du package nuget est le même que celui du <Package_id>.props
. Indice d'ici .
2) ajoutez-les dans <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) Modifiez le xxx.nuspec
fichier comme ceci:
<?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) alors vous devez utiliser la nuget pack
commande pour emballer ce projet. Avant d'installer ce package, vous devez d'abord nettoyer les caches nuget.
Après avoir installé ce package nuget, vous devez générer votre projet pour exécuter cette cible de copie personnalisée afin de copier le fichier dans votre projet principal.
En outre , il y a un problème similaire à ce sujet.