วิธีรวมไฟล์ resx ในแพ็คเกจ Nuget
ฉันมีโครงการ. Net Framework 4.6.1 ที่ฉันสร้างแพ็คเกจ nuget แพ็คเกจนักเก็ตนี้เพียงแค่ติดตั้ง 2 dll และไฟล์เนื้อหาสองสามไฟล์ซึ่งใช้งานได้ดี
ปัญหาคือตอนนี้ฉันเพิ่มสตริงทรัพยากรผ่านไฟล์ resx ที่อยู่ใน:
~\App_Data\Global\Resources\resource-strings.resx
และฉันไม่รู้ว่าจะทำให้ไฟล์นั้นเป็นส่วนหนึ่งของแพ็กเกจ nuget อย่างถูกต้องได้อย่างไร เมื่อฉันสร้าง. nupkg ฉันเห็นไฟล์ resx ที่นั่น แต่เมื่อฉันติดตั้งในโปรเจ็กต์อื่นไฟล์ resx ควรจะถูกคัดลอกไปยังโฟลเดอร์ App_Data \ Global \ Resources แต่มันไม่ใช่
เป็นไปได้ไหม?
จากสิ่งที่ฉันตรวจสอบฉันคิดว่าฉันต้องทำอะไรบางอย่างกับไฟล์เป้าหมาย + การกำหนดค่า nuspec แต่ฉันไม่ได้ลองอะไรเลย
ฉันแค่ต้องการไฟล์ resx ที่คัดลอกมา ไม่มีอะไรซับซ้อนไปกว่านั้น
คำตอบ
แน่ใจ เป็นไปได้และทำได้โดย nuget เนื่องจากคุณต้องการคัดลอกไฟล์ทรัพยากรนี้ไปยังโฟลเดอร์โครงการ asp net เป้าหมายของคุณคุณสามารถลองทำตามขั้นตอนต่อไปนี้:
================================================== ===
ขั้นแรกหากคุณต้องการติดตั้งnet461
แพ็กเกจ nuget นี้ในnet framework
โปรเจ็กต์ asp net คุณควรใช้โหนดเนื้อหาในxxx.nusepc
ไฟล์
ก่อนให้แน่ใจว่าสร้างการดำเนินการของทรัพยากร Strings.resx จะฝังตัวทรัพยากรมากกว่าเนื้อหา
1) ก่อนอื่นให้เรียกใช้คำสั่ง cmd: cd xxxx(project folder path)
แล้วเรียกใช้nuget spec
เพื่อสร้างไฟล์ nuspec สิ่งเหล่านี้เพียงพอแล้ว:
2)เปิดnuspec
ไฟล์และเพิ่มโหนดเนื้อหา:
<?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)จากนั้นบันทึกnuspec
ไฟล์และเรียกใช้nuget pack
เพื่อสร้างไฟล์nupkg
.
ก่อนที่คุณจะติดตั้งแพ็กเกจ nuget คุณควรล้างแคช nuget ก่อนเพื่อลบเวอร์ชันเก่าที่ไม่ถูกต้องของ nuget
เมื่อคุณติดตั้งแพคเกจนี้ไฟล์จะถูกคัดลอกไปยังรูทพา ธApp_Data\Global\Resources\resource-strings.resx
ของโปรเจ็กต์เว็บ
================================================== ==
หากคุณต้องการติดตั้งแพคเกจนี้ในโครงการใหม่ SDK (แกนสุทธิหรือ xxx กับPackageReferenceรูปแบบการจัดการ nuget) คุณสามารถสร้างไฟล์ควรเป้าหมายกับงานสำเนา
1)เพิ่มโฟลเดอร์ชื่อ build ใน net framework 4.6.1 project จากนั้นเพิ่มไฟล์ที่เรียกว่า<Package_id>.props
file
โปรดทราบว่าคุณควรตรวจสอบให้แน่ใจว่า id ของแพ็กเกจ nuget เหมือนกับไฟล์<Package_id>.props
. คำแนะนำจากที่นี่
2)เพิ่มสิ่งเหล่านี้ใน<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
ไฟล์ดังนี้:
<?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)จากนั้นคุณควรใช้nuget pack
คำสั่งเพื่อแพ็คโครงการนี้ ก่อนที่คุณจะติดตั้งแพคเกจนี้คุณควรล้างแคช nuget ก่อน
หลังจากที่คุณติดตั้งแพ็กเกจ nuget นี้คุณควรสร้างโปรเจ็กต์ของคุณเพื่อรันเป้าหมายการคัดลอกที่กำหนดเองนี้เพื่อคัดลอกไฟล์ลงในโปรเจ็กต์หลักของคุณ
นอกจากนี้ยังมีปัญหาที่คล้ายกันเกี่ยวกับเรื่องนี้