สร้างเครื่องมือ CLI แบบกำหนดเองที่สามารถแจกจ่ายด้วย nuget

ฉันเขียนโปรแกรมคอนโซลหลัก .net ที่สร้างโค้ดบางส่วนเพื่อช่วยฉันเร่งกระบวนการพัฒนาให้เร็วขึ้น ตอนนี้ฉันต้องการแจกจ่ายโปรแกรมคอนโซลนี้ผ่าน nuget ดังนั้นฉันจึงสามารถใช้เครื่องมือในโปรเจ็กต์อื่น ๆ เช่นเครื่องมือบรรทัดคำสั่งจาก Entity Framework แต่ฉันอ่านทุกที่ nuget นั้นใช้สำหรับไลบรารีคลาสเท่านั้น แต่ฉันต้องการให้แพ็คเกจของฉันทำงานได้และไม่ควรใช้สำหรับการนำเข้าและอะไรทำนองนั้น และเห็นได้ชัดว่า Microsoft ทำเช่นนั้นด้วย Entity Framework Tools ดังนั้นฉันคิดว่าต้องมีวิธี

ใครช่วยชี้ฉันไปในทิศทางที่ถูกต้องได้ไหม?

ฉันพบคำถามนี้ (แนวทางปฏิบัติที่ดีที่สุดในการรวมแอปคอนโซลใน NuGet ) แต่ปัญหาคือ คำตอบคือ มันเป็นไปไม่ได้ ซึ่งมันก็เป็นเช่นนั้น ดังที่คุณเห็นจากเครื่องมือ EF


person Simons0n    schedule 17.03.2018    source แหล่งที่มา


คำตอบ (1)


ฉันพบวิธีแก้ปัญหาและแชร์แพ็คเกจคอนโซลบน nuget.org สำเร็จแล้ว

คุณสามารถสร้างส่วนขยายบรรทัดคำสั่งสำหรับเครื่องมือ dotnet ได้ เช่น dotnet ef คุณสามารถสร้างคำสั่ง dotnet myAwesomeTool ได้ สิ่งเดียวที่คุณต้องทำคือสิ่งต่อไปนี้:

สร้างแอปพลิเคชันคอนโซลและเพิ่มโค้ดต่อไปนี้ลงใน .csproj ของคุณ

<PackageId>Company.MyAwesomeTool</PackageId>
<AssemblyName>dotnet-myAwesomeTool</AssemblyName>
<PackageType>DotnetCliTool</PackageType>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>

สร้างโซลูชันแล้วคุณจะพบแพ็คเกจ nuget ในโฟลเดอร์ bin ของคุณ แพ็คเกจ nuget นี้สามารถแจกจ่ายได้ และเมื่อคุณติดตั้งแล้ว คุณสามารถรัน dotnet myAwesomeTool ในโปรเจ็กต์ที่ติดตั้ง nuget ได้ ทำงานเหมือนมีเสน่ห์สำหรับฉัน =)

หากต้องการติดตั้งบนโปรเจ็กต์อื่น ให้เพิ่มสิ่งนี้ใน csproj:

<ItemGroup>
  <PackageReference Include="company.MyAwesomeTool" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
  <DotNetCliToolReference Include="company.MyAwesomeTool" Version="1.0.0" />
</ItemGroup>

สำหรับข้อมูลเพิ่มเติม: https://blog.maartenballiauw.be/post/2017/04/10/extending-dotnet-cli-with-custom-tools.html

person Simons0n    schedule 17.03.2018