Bagaimana cara memasukkan file resx ke dalam paket Nuget

Aug 19 2020

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

PerryQian-MSFT Aug 20 2020 at 06:02

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 net461paket nuget ini ke dalam net frameworkproyek net asp, Anda harus menggunakan node konten dalam xxx.nusepcfile

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 specuntuk menghasilkan file nuspec. Ini cukup:

2) buka nuspecfile 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 nuspecfile dan jalankan nuget packuntuk 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.resxproyek 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>.propsfile.

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.nuspecfile 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 packperintah 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.