Resx dosyası bir Nuget paketine nasıl eklenir

Aug 19 2020

Bir nuget paketi yaptığım bir .Net Framework 4.6.1 projem var. Bu nuget paketi basitçe 2 dll ve iyi çalışan birkaç içerik dosyası yükler.

Sorun şu ki, şu konumda bulunan bir resx dosyası aracılığıyla kaynak dizesi ekledim:

~\App_Data\Global\Resources\resource-strings.resx

Ve bu dosyayı nuget paketinin bir parçası haline nasıl getireceğimi bilmiyorum. .Nupkg oluşturduğumda, orada resx dosyasını görüyorum, ancak başka bir projeye yüklediğimde, resx dosyasının App_Data \ Global \ Resources klasörüne kopyalanması gerekiyor, ancak değil.

Mümkün mü?

Araştırdığım kadarıyla, hedef dosyalar + nuspec yapılandırması ile de bir şeyler yapmam gerektiğini düşünüyorum, ancak denediğim hiçbir şey işe yaramıyor.

Kelimenin tam anlamıyla kopyalanmış resx dosyasına ihtiyacım var. Bundan daha karmaşık bir şey yok.

Yanıtlar

PerryQian-MSFT Aug 20 2020 at 06:02

Elbette . Bu mümkündür ve nuget ile yapılabilir. Bu kaynak dosyasının hedef asp net proje klasörünüze kopyalanmasını istediğiniz için aşağıdaki adımları deneyebilirsiniz:

================================================ ===

Öncelikle bu yüklemek istiyorsanız, net461bir içine Nuget paketi net frameworkasp net projesi, kullanmak gerekir içerik düğümü içinde xxx.nusepcdosyanın

Öncelikle, resource-strings.resx'in Oluşturma Eyleminin İçerik yerine Gömülü Kaynak olduğundan emin olun .

1) önce cmd komutunu çalıştırın: cd xxxx(project folder path)ardından nuget specnuspec dosyasını oluşturmak için çalıştırın . Bunlar yeterli:

2)nuspec dosyayı açın ve içerik düğümünü ekleyin:

<?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) daha sonra nuspecdosyayı kaydedin nuget packve nupkg.

Nuget paketini kurmadan önce , nuget'in eski yanlış sürümlerini kaldırmak için nuget önbelleklerini temizlemelisiniz .

Bu paketi kurduğunuzda, dosya App_Data\Global\Resources\resource-strings.resxweb projesinin kök yoluna kopyalanacaktır .

================================================ ==

Bu paketi yeni sdk projesine ( PackageReference nuget yönetim biçimine sahip Net Core veya xxx ) yüklemek istiyorsanız, kopyalama görevi olan bir hedef dosya oluşturmalısınız.

1) 4.6.1 net framework projesinde build adında bir klasör ekleyin ve ardından dosya adında bir dosya ekleyin <Package_id>.props.

NuGet paketinin kimliğinin .NET Framework ile aynı olduğundan emin olmanız gerektiğini unutmayın<Package_id>.props . Buradan ipucu .

2) bunları ekleyin <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)xxx.nuspec Dosyayı şu şekilde değiştirin :

<?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) o zaman nuget packbu projeyi paketlemek için komut kullanmalısınız . Bu paketi kurmadan önce nuget önbelleklerini temizlemelisiniz.

Sonra bu Nuget paketini yükledikten gerektiğini inşa ana projeye dosyayı kopyalamak için bu özel kopyalama hedefini çalıştırmak için projenizi.

Ayrıca bununla ilgili de benzer bir sorun var.