使用.NET Core CLI,在定位完整框架时添加对本地DLL的引用

时间:2016-09-20 22:06:01

标签: .net-core

我想知道在使用.NET Core工具构建新的控制台应用程序并且仅针对.NET 4.5.1框架时,如何引用本地的未签名CLR 4.0程序集。

我在Windows 10计算机上执行了以下操作:

  1. 使用以下代码创建一个新的MyLibrary.cs:
  2. using System;
    namespace MyNamespace
    {
      public class MyLibrary
      {
        public static void SayHi()
        {
          Console.WriteLine("Hi");
        }
      }
    }
    
    1. 使用csc /t:library MyLibrary.cs编译上述内容。

    2. 创建一个新文件夹和一个.NET Core项目。

    3. mkdir MyConsoleApp
      cd MyConsoleApp
      dotnet new
      
      1. 将自动生成的project.json文件编辑为目标.NET 4.5.1。
      2. {
          "version": "1.0.0-*",
          "buildOptions": {
            "debugType": "portable",
            "emitEntryPoint": true
          },
          "dependencies": {},
          "frameworks": {
            "net451" : { } 
          }
        }
        
        1. 测试项目是否构建并运行。它确实。
        2. dotnet restore
          dotnet build
          bin\Debug\net451\MyConsoleApp.exe
          
          1. 编辑Program.cs以调用MyLibrary.dll中的代码。
          2. public static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
                MyNamespace.MyLibrary.SayHi();
            }
            

            这就是我被困住的地方。

            我在哪里放置我的DLL以及我将什么放在project.json 中以便我可以在我的程序集中调用代码?

1 个答案:

答案 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帮我解决这个问题。