I am in the process of porting a complex set of reports from iText5 to iText7 and need to rebuild the .Net community edition with Debug symbols to complete the port from 5 to 7. I am able to run the "possibly" correct CLI command this way:
dotnet pack iTextCore.netstandard.sln /p:Configuration=Debug
but that doesn't get me the same package structure you build for the official nuget package.
We will of course pay for the commercial license when we know our code runs, but in the meantime I'm trying to convert old code.
What is the official guidance from iText Software on how developers should accomplish the port from 5 to 7 with your existing resources? Is there a way to get a Debug build with symbols.
Best regards and congrats on building an excellent library.
TL; DR: use this repository and run
dotnet build iTextCore.netstandard.with.svg.sln /p:Configuration=Debug
nuget pack itext7.nuspec
There is no official guidance on how to migrate from iText5 from iText7. This is a major update of the library and almost all of the user-facing code was developed from scratch. Coming up with such a guide is absolutely infeasible because there is too much to cover. One source of information would be to compare samples from iText in Action book which covered a lot of use cases for iText5 library to their versions ported to iText7. The latter ones can be found here. But if you have specific questions feel free to post them on StackOverflow and you will probably get your answers (if those questions haven't been answered yet; many have been already).
The way the official NuGet package is assembled is more difficult than the one you guessed, but only a tiny bit.
If you look at the repository layout, you will find itext7.nuspec file which is a complete descriptor of the final package. To pack everything you need to call
nuget pack itext7.nuspec
However, you need to build the binaries to pack first. You are interested in iTextCore.netstandard.with.svg.sln solution file which integrates all the Core modules at the moment. The command would be similar to what you described:
dotnet build iTextCore.netstandard.with.svg.sln /p:Configuration=Debug
Please note, however, that an easier approach in order to enable debugging might be for you to download the source code and reference the projects directly, thus you would be easily able to walk through the source code, possibly do the modifications etc.
Related
In a project/solution with lots of <PackageReference> dependencies, it can be difficult to find the source of a transitive dependency that's being pulled in. For example, no projects in my solution directly reference the package System.Data.SqlClient, but something is pulling it in transitively. Tracking that down "by hand" is virtually impossible in a large solution or project with lots of direct package references.
Is there any ready-made way (eg, a combination of .Net CLI commands) that, given a particular package, will find and reveal the source of the transitive reference? I use Rider, which has some awesome code navigation and "discovery"-type tools, but I can't find anything that helps with my goal.
Note: I also have VisualStudio if it has this capability built-in somewhere, I'd just need a pointer to where/how.
The capability is built into the latest Visual Studio 2019.
With Visual Studio 2019, Update 6, I can see something like the following:
Note that you can also discover packages by searching in the solution explorer.
Unfortunately it's not available in the NuGet Package Manager installed view yet.
Searching in VS did not work for me, at least not for a BCL package like System.Net.Http. What did work is looking in obj\project.assets.json, which lists all dependencies.
It's still a somewhat manual process of searching for each package up the tree. https://www.jerriepelser.com/blog/analyze-dotnet-project-dependencies-part-2/ describes the process well and provides code to automate it, but I have not tried the code.
Since I had the same problem and didn't find anything working (on SO, google and my installed VS2022 Ultimate), I've create a powershell and python script.
The script uses the nuget-deps-tree - npm package to get a dependency tree and then traverses this tree to find the nuget.
See: https://github.com/Kraego/NailDownNuget
Not an ideal solution in many cases but just to mention it. Switching to paket dependency manager could help as well, especially for bigger projects.
It has a command called paket why that quickly tells you for each package whether it's a top level, a direct or a transient dependency and additionally shows the dependency chain. See this blog post for some examples.
I'm very confused about Syncfusion Essential Studio. I want to use the XlsIo package in my app to extract some data from an Excel file and I don't understand how I should reference it.
The preferred way would be to use NuGet packages, for I which I suppose I could use the WPF nuget URL? Apparently no license key must be provided anymore to use it, which makes me wonder when I have to provide it – and why I installed a whopping 3GB tool if I could have just used this public NuGet package URL instead?
I did not install assemblies to the GAC as I plan to work on multiple devices with multiple projects and don't want to rely on assemblies being in the GAC, if possible.
I guess I can also just reference the assemblies in the essential studio install directory, but I'm not sure whether that's intended and how I'll deal with updates (cross-device issue aside).
So what I'm asking is basically: can I just use the NuGet packages, as that would be the easiest and most maintainable option in my opinion, and do I have to provide any license information at some point (e.g. deployment)?
Bonus question: what purpose exactly serves the essential studio, if I end up using NuGet packages? A mere sample viewer + number of optional tools?
Please find the response for your queries.
Query 1: Can I just use the NuGet packages, as that would be the easiest and most maintainable option in my opinion, and do I have to provide any license information at some point (e.g. deployment)?
Answer: Syncfusion is providing license on customer basis only. You no need to worry, if you have license for each developer. You can use any installation option such as Essential Studio installer, Platform installer, Link Installer or NuGet packages.
Query 2: What purpose exactly serves the essential studio, if I end up using NuGet packages? A mere sample viewer + number of optional tools?
Answer: Essential Studio build comprises of all platforms, samples & additional tools/utilities for configuration purpose. This will be helpful for evaluation purpose for the customer who doesn’t know about Syncfusion products.
Online samples are there to showcase our Syncfusion products. But sometimes user want to refer the code snippets and for window client platforms. So, Essential Studio build is necessary for these cases. Syncfusion have separate platform builds also if the customer needs to evaluate the products with specific platforms. To know more about Essential Studio setup features, click the below link.
https://help.syncfusion.com/common/essential-studio/overview
Thanks,
Mathi.
Currently using TestStack.White for a project, and ran across the Uia3 release on NuGet. However, can't seem to figure out if it's possible to use other packages (ex: TestStack.White.ScreenObjects) with this release, or if there are plans to release compatible builds.
The only real lead on the package is this Google Groups post detailing the package. Based on my understanding, it seems to be a drop-in replacement for the mainline TestStack.White. But documentation is a little sparse. Any suggestions would be appreciated!
Yeah the UIA3 build is a branch of the master branch so the TestStack.White.ScreenObjects should continue to work with it. The UIAComWrapper branch is the UIA3 branch and has the ScreenObjects in it. It looks like the ScreenObjects was never published as a nuget package but it should be possible to use if someone publishes it.
I recently added MathNet.Numerics through NuGet to my C# solution. The package directory in the solution folder ballooned to about 50 MB! Yet I can simply download the MathNet dll and use only that, which takes up only 1.5 MB. If I want documentation as well, I can include the XML, which is another 3.5 MB.
Am I using Nuget wrong or is this expected behavior? It seems like it is wasting a lot of space.
The reason the package contains that many editions of the same version is a conflict of interests:
We would like to support a wide range of platforms.
We would like to leverage advanced features even if they are only available on some of the platforms (usually only on the full .Net framework, like TPL or System.Numerics), for performance but also for compatibility and usability reasons.
Avoid downstream dependency nightmares by only publishing a single package per version, including all platforms.
If this is causing you problems, consider to bring this point up with the team in discuss.mathdotnet.com (new) or maybe open an issue in GitHub.
PS: If NuGet doesn't work well for you, we also provide Zip archives you can handle manually and pick exactly what you need.
It looks like expected behaviour. It is up to the NuGet package owner to decide how many versions to put in a single package.
You can probably safely delete it, but it'll come back every time you restore the NuGet files. If you are worried about a lot of bloat being included in your build or release, check your .csproj file and make sure you only copy over the MathNet.Numerics.dll version you need.
I'm trying to get Antlr working using NuGet.
The current version of the Antlr.Runtime.dll that I'm trying to reference is 3.1.3.42154.
The issue is that when I try and build my Lexer and Parser .cs files I get a lot of build errors about missing types.
e.g. The class GrammarRuleAttribute cannot be found. I've looking in the Antlr.Runtime.dll and the class isn't there. However if you look at the Antlr project on GitHub then your can see the GrammarRuleAttribute should indeed be in the Antlr.Runtime.dll.
Is this a bug or am I missing something?
This is a somewhat time-sensitive Q/A because the C# targets for ANTLR (CSharp2 by Johannes Luber and CSharp3 by myself) change over time. I know the CSharp2 target has had some issues recently that are being worked on. As of this writing, the current version of the CSharp3 target is 3.3.1.
Here is a link to the CSharp3 target documentation, which includes several download links to the C# port of the ANTLR tool, the CSharp3 runtime, MSBuild support, and some tools for Visual Studio. I update this document periodically as new versions are released.
Edit: If you are experiencing display problems or exception messages when opening a grammar file, you should uninstall the ANTLR 3, StringTemplate, and Extensibility Framework extensions from the Extension Manager and reinstall them per the instructions in the linked documentation. I've updated the extensions to resolve the problem.
I had this problem when using CSharp2 or CSharp3. I'm building in ANTLRWorks 1.5rc1.
It turned out to be related to the ANTLR version. I installed the official package using NuGet, which was 3.1.x. After removing that and installing the unoffical 3.4.1 package, it worked.
There was still a minor issue relating to the HIDDEN channel in my test grammar. Changing it to Hidden (as defined in Antlr3.Runtime) resolved the issue