Resx dosyası bir Nuget paketine nasıl eklenir
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
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, net461
bir içine Nuget paketi net framework
asp net projesi, kullanmak gerekir içerik düğümü içinde xxx.nusepc
dosyanı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 spec
nuspec 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 nuspec
dosyayı kaydedin nuget pack
ve 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.resx
web 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 pack
bu 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.