Пакеты Nuget с общими именами

Я играл с NuGet, поэтому я создал проект, написал две простые функции (умножение и сложение), упаковал его со следующей спецификацией:

<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>

Затем опубликовал его в моем локальном фиде NuGet.Server, добавил мой новый пакет nuget в другой пример проекта, запустил его и возвращает:

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.

Гуглил в течение различного времени, но ничего не нашел (был ли я единственным достаточно глупым, чтобы назвать временный пакет 'Math'?), Поэтому я представил, что в некотором смысле мое имя модуля было табу, изменило его на Math_Test, тот же исходный код, и он работал как шарм,

Есть ли еще какая-то информация, которая определяет, какие значения являются табу? Я не могу найти ничего в официальной документации Nuget.

Класс Math указан в следующем dll (mscorlib.dll), поэтому он даже не имеет того же идентификатора...

#region Assembly mscorlib.dll, v4.0.0.0
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
#endregion

РЕДАКТИРОВАТЬ: И вот код примера приложения

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();
        }
    }
}

1 ответ

Решение

Похоже, что проблема была не в названии, а в "Культуре внутри сборки" (которая не совпадает с языком, указанным в спецификации Nuget. Изменение AssemblyCulture из

[assembly: AssemblyCulture("en-GB")]в[assembly: AssemblyCulture("")]решил проблему.

Я нашел предупреждение, переключая диагностический вывод во время сборки, как предложено @ShyamalDesai

CSC : warning CS1607: Assembly generation -- Referenced assembly 'Math' has different culture setting of 'en-GB'
Другие вопросы по тегам