我想知道在使用.NET Core工具构建新的控制台应用程序并且仅针对.NET 4.5.1框架时,如何引用本地的未签名CLR 4.0程序集。
我在Windows 10计算机上执行了以下操作:
using System;
namespace MyNamespace
{
public class MyLibrary
{
public static void SayHi()
{
Console.WriteLine("Hi");
}
}
}
使用csc /t:library MyLibrary.cs
编译上述内容。
创建一个新文件夹和一个.NET Core项目。
mkdir MyConsoleApp
cd MyConsoleApp
dotnet new
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {},
"frameworks": {
"net451" : { }
}
}
dotnet restore
dotnet build
bin\Debug\net451\MyConsoleApp.exe
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
MyNamespace.MyLibrary.SayHi();
}
这就是我被困住的地方。
我在哪里放置我的DLL以及我将什么放在project.json 中以便我可以在我的程序集中调用代码?
答案 0 :(得分:0)
旧版DLL必须包装在nuget包中。我以前从未创建过nuget包。以下是我在这种情况下的表现:
1. 准备为旧版DLL创建一个nuget包:
cd..
mkdir lib\net40
move MyLibrary.dll lib\net40
nuget spec -AssemblyPath lib\net40\MyLibrary.dll
// which generates a MyLibrary.dll.nuspec XML file.
2. :填写或删除nuspec文件中的字段:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyLibrary.dll</id>
<version>1.0.0</version>
<authors>Wallace Kelly</authors>
<description>My test library.</description>
</metadata>
</package>
3. 打包nuget包并将其移动到nuget文件夹结构中:
nuget pack MyLibrary.nuspec -OutputDirectory lib\net40
// which generates a MyLibrary.dll.1.0.0.nupkg
4. :创建一个新的nuget-source文件夹:
nuget init lib nuget-source
5. 在项目文件夹(例如,MyConsoleApp)中,使用以下内容创建一个新的nuget.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
6. 将您的本地nuget-source文件夹添加到nuget源列表中:
nuget sources add -Name "Local Source" -Source "c:\temp\dotnet-core-test\nuget-source" -configfile nuget.config
在project.json文件中,向旧版DLL添加依赖项。
"dependencies": {
"MyLibrary.dll": "1.0.0"
},
7。此时,您应该能够恢复,构建和运行项目。
dotnet restore
dotnet build
dotnet run
HT:感谢@ michael-kennedy帮我解决这个问题。