Cómo incluir un archivo resx en un paquete Nuget
Tengo un proyecto .Net Framework 4.6.1 a partir del cual hago un paquete nuget. Este paquete nuget simplemente instala 2 dlls y un par de archivos de contenido que funcionan bien.
El problema es que ahora agregué una cadena de recursos a través de un archivo resx que reside en:
~\App_Data\Global\Resources\resource-strings.resx
Y no sé cómo hacer que ese archivo sea parte del paquete nuget correctamente. Cuando creo el .nupkg, veo el archivo resx allí, pero cuando lo instalo en otro proyecto, el archivo resx debería copiarse en la carpeta App_Data \ Global \ Resources, pero no es así.
¿Es posible?
Por lo que investigué, creo que también tengo que hacer algo con los archivos de destino + configuración nuspec, pero nada de lo que he probado funciona.
Literalmente solo necesito copiar el archivo resx. No hay nada más complicado que eso.
Respuestas
Claro . Es posible y puede hacerlo nuget. Dado que desea que este archivo de recursos se copie en la carpeta del proyecto asp net de destino, puede intentar los siguientes pasos:
================================================ ===
Primero , si desea instalar este net461
paquete nuget en un net framework
proyecto asp net, debe usar el nodo de contenido en el xxx.nusepc
archivo
Primero, asegúrese de que la Acción de compilación de resource-strings.resx sea Recurso incrustado en lugar de Contenido .
1) primero , ejecute el comando cmd: cd xxxx(project folder path)
y luego ejecute nuget spec
para generar el archivo nuspec. Estos son suficientes:
2) abra el nuspec
archivo y agregue el nodo de contenido:
<?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) luego guarde el nuspec
archivo y ejecútelo nuget pack
para generar el nupkg
.
Antes de instalar el paquete nuget, primero debe limpiar las cachés nuget para eliminar las versiones antiguas incorrectas del nuget.
Cuando instale este paquete, el archivo se copiará en la ruta raíz App_Data\Global\Resources\resource-strings.resx
del proyecto web.
================================================ ==
Si desea instalar este paquete en un nuevo proyecto sdk (Net Core o xxx con el formato de administración de nuget PackageReference), podría crear un archivo de destino con una tarea de copia.
1) agregue una carpeta llamada build en el proyecto net framework 4.6.1 y luego agregue un archivo llamado <Package_id>.props
file.
Tenga en cuenta que debe asegurarse de que el ID del paquete nuget sea el mismo que el de <Package_id>.props
. Sugerencia desde aquí .
2) agregue estos en <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) Modifique el xxx.nuspec
archivo así:
<?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) entonces debes usar el nuget pack
comando para empaquetar este proyecto. Antes de instalar este paquete, primero debe limpiar las cachés nuget.
Después de instalar este paquete nuget, debe compilar su proyecto para ejecutar este destino de copia personalizado para copiar el archivo en su proyecto principal.
Además , hay un problema similar al respecto.