I was playing with NuGet so I created a project, wrote two simple functions (multiply and add), packaged it with the following spec:
<metadata>
<id>Math</id>
<version>1.0.0.0</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<copyright>Copyright 2015</copyright>
<tags>Matematica, Test</tags>
</metadata>
Then publicized it on my local NuGet.Server feed, added my new nuget package in another sample project, started it and it returns this:
Could not load file or assembly 'Math, Version=1.0.0.0, Culture=en-GB, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Googled for various time but found nothing (was I the only dumb enough to call a temporary package 'Math'?), so I imagined that somewhat my module name was taboo, changed it into Math_Test, same source code and it worked like a charm.
Is there some more informations out there that specifies which values are taboo? I can't find anything on nuget official documentation.
The class Math is specified in the following dll (mscorlib.dll) so it doesn't even have the same id...
#region Assembly mscorlib.dll, v4.0.0.0
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
#endregion
EDIT: And here is the code of the sample application
using Math;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = -1;
try
{
Common e = new Math.Common();
a = e.Multiply(3, 2);
}
catch (Exception e)
{
System.Console.Out.Write(e);
}
System.Console.Out.Write(a);
System.Console.Read();
}
}
}
Seems like the problem was not the name but the Culture inside the Assembly (which is not the same as the language specified into Nuget spec. Changing the AssemblyCulture from
[assembly: AssemblyCulture("en-GB")]
to
[assembly: AssemblyCulture("")]
solved the issue.
I found the warning by toggling diagnostic output during build, as suggested by @ShyamalDesai
CSC : warning CS1607: Assembly generation -- Referenced assembly 'Math' has different culture setting of 'en-GB'