Bagaimana cara memasukkan file resx ke dalam paket Nuget
Saya memiliki proyek .Net Framework 4.6.1 tempat saya membuat paket nuget. Paket nuget ini hanya menginstal 2 dll dan beberapa file konten yang berfungsi dengan baik.
Masalahnya adalah saya sekarang menambahkan string sumber daya melalui file resx yang berada di:
~\App_Data\Global\Resources\resource-strings.resx
Dan saya tidak tahu bagaimana membuat file itu menjadi bagian dari paket nuget dengan benar. Ketika saya membuat .nupkg, saya melihat file resx di sana, tetapi ketika saya menginstalnya di proyek lain, file resx harus disalin ke folder App_Data \ Global \ Resources, tetapi sebenarnya tidak.
Apa itu mungkin?
Dari apa yang saya selidiki, saya pikir saya juga harus melakukan sesuatu dengan file target + konfigurasi nuspec, tetapi tidak ada yang saya coba berhasil.
Saya benar-benar hanya perlu menyalin file resx. Tidak ada yang lebih rumit dari itu.
Jawaban
Tentu . Itu mungkin dan bisa dilakukan dengan nuget. Karena Anda ingin file sumber daya ini disalin ke folder proyek target asp net, Anda dapat mencoba langkah-langkah berikut:
================================================== ===
Pertama , jika Anda ingin menginstal net461
paket nuget ini ke dalam net framework
proyek net asp, Anda harus menggunakan node konten dalam xxx.nusepc
file
Pertama, pastikan bahwa Build Action resource-strings.resx adalah Sumber Daya Tersemat, bukan Konten .
1) pertama , jalankan perintah cmd: cd xxxx(project folder path)
dan kemudian jalankan nuget spec
untuk menghasilkan file nuspec. Ini cukup:
2) buka nuspec
file dan tambahkan node konten:
<?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) kemudian simpan nuspec
file dan jalankan nuget pack
untuk menghasilkan nupkg
.
Sebelum Anda menginstal paket nuget, Anda harus membersihkan cache nuget terlebih dahulu untuk menghapus versi lama nuget yang salah.
Saat Anda menginstal paket ini, file tersebut akan disalin ke jalur root App_Data\Global\Resources\resource-strings.resx
proyek web.
================================================== ==
Jika Anda ingin menginstal paket ini ke dalam proyek sdk baru (Net Core atau xxx dengan format manajemen nuget PackageReference), Anda harus membuat file target dengan tugas salin.
1) tambahkan folder bernama build in the net framework 4.6.1 project dan kemudian tambahkan file bernama <Package_id>.props
file.
Perhatikan bahwa Anda harus memastikan bahwa id paket nuget sama dengan <Package_id>.props
. Petunjuk dari sini .
2) tambahkan ini di <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) Ubah xxx.nuspec
file seperti ini:
<?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) maka Anda harus menggunakan nuget pack
perintah untuk mengemas proyek ini. Sebelum Anda menginstal paket ini, Anda harus membersihkan cache nuget terlebih dahulu.
Setelah Anda menginstal paket nuget ini, Anda harus membangun proyek Anda untuk menjalankan target salinan khusus ini untuk menyalin file ke dalam proyek utama Anda.
Juga , ada masalah serupa tentang ini.