如何使用 nuget 包中定义的扩展?
How do you use extensions defined in a nuget package?
我似乎也无法弄清楚在我的文件顶部使用什么 using
语句。
nuget 包在这里:https://www.nuget.org/packages/csharp-extensions
我尝试使用的方法是 Object#Send
所以,我打电话给
<#objectInstanec>.Send("SomeMethod")
但是编译器说该方法没有在类型对象上定义。
Send
在这里定义:https://github.com/NullVoxPopuli/csharp-extensions/blob/master/Extensions/Methods.cs#L26
我尝试了各种使用语句:
using csharp_extensions.Extensions.Methods;
using csharp_extensions.Extensions;
using csharp_extensions
none 似乎有效(csharp_extensions
不存在)
更新 - 我如何安装包
我的project.json:
{
"dependencies": {
"System.Reflection": "4.1.0-beta-*",
"Microsoft.Extensions.PlatformAbstractions": "(1.0.0-rc1-final,]",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*",
"csharp-extensions": "1.0.1"
},
"commands": {
"test": "xunit.runner.dnx"
},
"frameworks": {
"dnxcore50": {
"_": "this is the recommended windows runtime",
"dependencies": {
"System.Console": "4.0.0-beta-*",
"System.Reflection": "4.1.0-beta-*",
"System.Reflection.TypeExtensions": "4.1.0-beta-*",
"System.Runtime.Extensions": "(4.0,]",
"System.IO": "(4.0,]",
"csharp-extensions": "1.0.1"
}
}
}
}
然后我通过
安装依赖项
dnu restore
我觉得你的 NuGet 包不正确。您的程序集在 bin\Debug\dnxcore50 中。我会看一下 NuGet documentation 或下载一个可用的现有 NuGet 包。
NuGet v2 样式包包含 lib 目录中的程序集。 lib 目录中的目录以目标框架命名。查看 Microsoft.Extensions.PlatformAbstractions NuGet 包,您在两个目录中都有一个程序集:
lib\net451
lib\dotnet5.4
因此,对于您的 NuGet 包,我相信这些程序集未被引用,因为它们不在正确的目录中。 dotnet5.4目录下有dnxcore目标框架可以使用的程序集
此外,project.json 应该如下所示(没有 system.reflection,因为它是多余的)
{
"dependencies": {
"Microsoft.Extensions.PlatformAbstractions": "(1.0.0-rc1-final,]",
"System.Reflection": "4.1.0-beta-*",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*"
},
"commands": {
"run": "csharp_extensions",
"test": "xunit.runner.dnx"
},
"frameworks": {
"dnxcore50": {
"_": "this is the recommended windows runtime",
"dependencies": {
"System.Console": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.1.0-beta-*",
"System.Runtime.Extensions": "(4.0,]",
"System.Dynamic.Runtime": "(4.0.0,]",
"Microsoft.CSharp": "(4.0.0,]",
"System.IO": "(4.0,]"
}
}
}
}
我似乎也无法弄清楚在我的文件顶部使用什么 using
语句。
nuget 包在这里:https://www.nuget.org/packages/csharp-extensions 我尝试使用的方法是 Object#Send
所以,我打电话给
<#objectInstanec>.Send("SomeMethod")
但是编译器说该方法没有在类型对象上定义。
Send
在这里定义:https://github.com/NullVoxPopuli/csharp-extensions/blob/master/Extensions/Methods.cs#L26
我尝试了各种使用语句:
using csharp_extensions.Extensions.Methods;
using csharp_extensions.Extensions;
using csharp_extensions
none 似乎有效(csharp_extensions
不存在)
更新 - 我如何安装包
我的project.json:
{
"dependencies": {
"System.Reflection": "4.1.0-beta-*",
"Microsoft.Extensions.PlatformAbstractions": "(1.0.0-rc1-final,]",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*",
"csharp-extensions": "1.0.1"
},
"commands": {
"test": "xunit.runner.dnx"
},
"frameworks": {
"dnxcore50": {
"_": "this is the recommended windows runtime",
"dependencies": {
"System.Console": "4.0.0-beta-*",
"System.Reflection": "4.1.0-beta-*",
"System.Reflection.TypeExtensions": "4.1.0-beta-*",
"System.Runtime.Extensions": "(4.0,]",
"System.IO": "(4.0,]",
"csharp-extensions": "1.0.1"
}
}
}
}
然后我通过
安装依赖项dnu restore
我觉得你的 NuGet 包不正确。您的程序集在 bin\Debug\dnxcore50 中。我会看一下 NuGet documentation 或下载一个可用的现有 NuGet 包。
NuGet v2 样式包包含 lib 目录中的程序集。 lib 目录中的目录以目标框架命名。查看 Microsoft.Extensions.PlatformAbstractions NuGet 包,您在两个目录中都有一个程序集:
lib\net451
lib\dotnet5.4
因此,对于您的 NuGet 包,我相信这些程序集未被引用,因为它们不在正确的目录中。 dotnet5.4目录下有dnxcore目标框架可以使用的程序集
此外,project.json 应该如下所示(没有 system.reflection,因为它是多余的)
{
"dependencies": {
"Microsoft.Extensions.PlatformAbstractions": "(1.0.0-rc1-final,]",
"System.Reflection": "4.1.0-beta-*",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*"
},
"commands": {
"run": "csharp_extensions",
"test": "xunit.runner.dnx"
},
"frameworks": {
"dnxcore50": {
"_": "this is the recommended windows runtime",
"dependencies": {
"System.Console": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.1.0-beta-*",
"System.Runtime.Extensions": "(4.0,]",
"System.Dynamic.Runtime": "(4.0.0,]",
"Microsoft.CSharp": "(4.0.0,]",
"System.IO": "(4.0,]"
}
}
}
}