Comments (6)
I started my first Myriad plugin only very recently, so I might be missing something. That said, here are my experiences with packaging my plugin. Maybe it's helpful to you:
In your consuming project: You don't need Myriad.Core. You do need Myriad.SDK.
That's because the Myriad.SDK package contains all relevant files - including Myriad.Core - in its tools folder anyway.
In your plugin project: You do need Myriad.Core. You don't need Myriad.SDK.
However, if you publish your generator as a tool as well, Myriad.Core doesn't have to flow to your consuming project. To prevent Myriad.Core from flowing to the consuming project, you have to set PrivateAssets="all" for the Myriad.Core PackageReference (see docs).
Btw, you can make installing your plugin even easier by adding a reference to Myriad.SDK in your plugin project. That way, a consumer must only install your plugin package and gets Myriad.SDK automatically. However, for that to work you have to set PrivateAssets="none" for the Myriad.SDK PackageReference in your plugin project. If you don't set PrivateAssets="none", the Myriad.SDK package's build folder won't flow to the consuming project.
Here's my project file for reference.
I hope I didn't misunderstand you questions and that my experience is actually relevant to you.
from myriad.
@JordanMarr / @Andreas-Dorfer The reason only the SDK needs and includes the others is theres a step in the pack process that merges the nupkg together:
sprintf "dotnet-mergenupkg --source \"%s/Myriad.Sdk.%s.nupkg\" --other \"%s/Myriad.%s.nupkg\" --tools --only-files"
nugetDir latestEntry.NuGetVersion nugetDir latestEntry.NuGetVersion
This was due to one of the ways the dotnet tools worked where transient dependencies had to be included otherwise they could not be found or located easily. This can be seen in the props/targets where there needs to be a location of the myriad tool in order to invoke the code generation:
<MyriadSdk_Generator_Exe>$(MSBuildThisFileDirectory)../tools/net5.0/any/Myriad.dll</MyriadSdk_Generator_Exe>
So because the nupkg's is merged the myriad executable can be easily found, you could probably do this with installing myriad as just a tool but that's another step for the user to do on where I wanted to 'try' and make this as easy as possible, which can be quite difficult...
from myriad.
Sorry forgot to comment on this, I think I can adjust the non essential libs but I think it requires certain options to be enabled on the client, I really should of added the comment at the time as I cant remember the specifics now :-)
from myriad.
@Andreas-Dorfer No this is relevant thanks for adding this, I think need to tweak the proj files to allow this to be easier but the client also needs to do the steps you mentioned to avoid adding unnecessary dependencies.
from myriad.
from myriad.
Docs are as is unfortunatly.
from myriad.
Related Issues (20)
- Add batching API so state can be passed amongst plugins of the same type HOT 3
- [docs] How to build the docs pages locally? HOT 5
- TOSO: Rip Docsy theme the fuck out.
- Myriad di deploy di server mana? app.myriad.social HOT 1
- Did myriad letters are supported as superscript?
- Allow inline generation with custom placement HOT 15
- Allow generating lenses with module instead of namespace, or without either HOT 8
- Memoise the calls to toml get configuration HOT 1
- Extensions like SynType.Option generate incorrect syntax HOT 1
- Upgrading from 0.5.0 to 0.8.1 removes keywords from many elements HOT 12
- Can we have a release please? ;) HOT 3
- Plugin path not quoted HOT 1
- Automatic generation of record variant types HOT 5
- Change log link in nugget has no version
- Readme missing from nugget package
- Working on invalid syntax HOT 2
- Generate output based on multiple input files HOT 6
- Documentation on how to create my own plugin? HOT 2
- The "Terms of use" in the README seems to violate the Open Source Definition. HOT 2
- New nuget version with Fantomas upgrade HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from myriad.