使用通用名称

时间:2015-12-07 17:22:34

标签: nuget nuget-server

我正在玩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.

用Google搜索了不同的时间但没有找到任何东西(我是唯一一个愚蠢到打电话给临时包裹的人吗?数学&#39;?)所以我想象我的模块名称是禁忌 ,将其改为Math_Test,相同的源代码,它就像一个魅力。

是否还有更多信息指定哪些值是禁忌? 我无法在nuget官方文档中找到任何内容。

类Math在以下dll(mscorlib.dll)中指定,因此它甚至没有相同的ID ...

#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 个答案:

答案 0 :(得分: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'