I'm trying to create a workbook integration, and all is well and good until I get to the "shipping your integration" part of this tutorial: Getting Started with the Xamarin Workbooks SDK. One difference is that I'm using a netstandard2.0 library instead of a PCL. I have created nuget packages before, but here are my issues:
1) It says to include the dll like this:
<files> <file src="MyIntegration\bin\Release\netstandard2.0\MyIntegration.dll" target="xamarin.interactive" /> </files>
but then it gives me an error like the following:
WARNING: 1 issue(s) found with package 'MyIntegration'. Issue: Assembly outside lib folder. Description: The assembly 'xamarin.interactive\MyIntegration.dll' is not inside the 'lib' folder and hence it won't be added as reference when the package is installed into a project. Solution: Move it into the 'lib' folder if it should be referenced.
The nuget packing doesn't complain when I do something like this:
<file src="MyIntegration\bin\Release\netstandard2.0\MyIntegration.dll" target="lib\net20\MyIntegration.dll" /> <file src="MyIntegration\bin\Release\netstandard2.0\MyIntegration.deps.json" target="lib\net20\MyIntegration.deps.json" />
But that can't be right because it doesn't refer to the xamarin.interactive folder at all. Which brings me to the second issue.
2) When the tutorial says "The most important part is that all of the files for your integration must be in a xamarin.interactive directory at the root of the package," which files, exactly is it referring to? Copy the .cs files? The whole project? The dll? (I know I'll feel dumb when someone tells me the answer)
And I'll go ahead and add some background context. After I manage to get the tutorial working, I'd like to move on to something more interesting. I don't know if observables are fully supported yet, but I'm inspired to try to accomplish a .Net version of the following Rx visualization for JavaScript . Are simple animations like that even supported in workbooks? I know images are supported.
This input by Abok gave me hopes, as well: https://forums.xamarin.com/discussion/104665/asynchronous-output#latest
but I noticed evaluation doesn't have a subscribe method like in Abok's rough code snippets (because it was just an idea at the time).
if (evaluation.Result is IObservable) evaluation.Subscribe (value => { // the ID from the evaluation would tie the out-of-band result to the cell agent.PublishEvaluationResult (evaluation.Id, value); });
And it looks like this file is related to Abok's brainstorming: https://github.com/Microsoft/workbooks/blob/master/Samples/CompilationIntegration/AgentIntegration.cs
Anyways, still trying to figure this stuff out a little at a time. I'd be grateful for anyone willing to provide some insight. Thanks in advance.
Brief answer because weekend.
1) Ignore the warning. NuGet is letting you know that if you were to add your integration NuGet to a normal .NET project, that project would not get any new assembly references. NuGet doesn't know about Workbooks.
2) "All the files" means all the files necessary for your integration to work. In the simplest case, it's just the DLL. Only you know if your assembly requires other files to work. But certainly the source of your integration is not needed by Workbooks.
Feel free to ask if you need more help, and I'll take a look during the week.
Answers
Brief answer because weekend.
1) Ignore the warning. NuGet is letting you know that if you were to add your integration NuGet to a normal .NET project, that project would not get any new assembly references. NuGet doesn't know about Workbooks.
2) "All the files" means all the files necessary for your integration to work. In the simplest case, it's just the DLL. Only you know if your assembly requires other files to work. But certainly the source of your integration is not needed by Workbooks.
Feel free to ask if you need more help, and I'll take a look during the week.
Thanks a lot for you help, Sandy. I was able to get it working.
I'll move the topic of observables to a new thread.