We have roughly 200 projects which reference a range of nuget packages which have made our life difficult - this is due to adding target files which require extra information in the nuget package itself. This then causes NCrunch to fail as it doesn't copy the entire nuget package to the working area, and fails to find specific files.
I can see this is mentioned multiple times eg:
here, and
here, etc.
An example, using a common package Microsoft.Net.Compilers (rather then many of the inhouse ones that also cause problems), would be:
Quote:..\..\..\Packages\Microsoft.Net.Compilers.2.4.0\tools\Microsoft.CSharp.Core.targets (84, 5): The specified task executable location "C:\Users\username\AppData\Local\NCrunch\22412\77\Packages\Microsoft.Net.Compilers.2.4.0\build\..\tools\csc.exe" is invalid.
The solution that has always been suggested is to add "Additional Folders" to each project. The result of this is a huge amount of overhead, adding the references to each project, and maintenance issues when upgrading as the specific versioned directory needs to be re-added across all the projects. It also causes a large increase the NCrunch workarea size considerably (up to 30 GB sometimes), although not as critical as the maintenance concerns.
The change log for 3.12 has an item which I had hoped would fix this, and mean we can stop using these work arounds. This doesn't seem to be the case, and my question is, am I using anything incorrectly?
Is there anything else / new we can do that would prevent using "Additional Folders"?
Change log I'm referencing is:
Quote:Restructured NCrunch's handling of Nuget package directories so that these are no longer considered fixed to the
User\.nuget\packages directory, as it is now clear that Nuget package directories can be separately configured on a per-project
basis and can be in a range of different places depending on the install state of the machine. NCrunch should now also be able
to properly deal with multiple package directories. This should resolve a range of problems related to package discovery at
runtime, especially when using NCrunch over a grid or when automatically transferring packages to remote grid nodes.