在没有 visual studio 的情况下使用 .NET Framework 4.6.1 构建 .NET Standard Library 1.4

Build .NET Standard Library 1.4 using .NET Framework 4.6.1 without visual studio

我们尝试在 windows 服务器 2012 RC2 中使用没有 visual studio 的命令提示符使用 .NET Framework 4.6.1 构建 .NET Standard Library 1.4 项目以实现自动化目的。

我在服务器上安装了以下内容,

.Net Framework 4.6.1
.Net Framework 4.6.1 Targeting pack
Microsoft Build Tools 2015

这个 .NET 标准库项目说 ProjectA 被其他两个 .NET 标准库项目 ProjectB 和 ProjectC 引用。

将项目 A 保留为启动项目

当我尝试在 dotnet restore 之后使用 dotnet build cmd 编译 ProjectA 时,出现以下错误,

C:\Document\ProjectA>dotnet build

Project ProjectA (.NETStandard,Version=v1.4) will be compiled because 
expected outputs are missing

Compiling ProjectA for .NETStandard,Version=v1.4
C:\Program Files\dotnet\dotnet.exe compile-csc 
@C:\Document\ProjectA\obj\Debug\netstandard1.4\dotnet-compile.rsp returned 
Exit Code 1

C:\Document\ProjectA\Sample.cs(1,17): error CS0234: The type or namespace name 
'ProjectB' does not exist in the namespace 'XYZ' (are you missing an 
 assembly reference?)

C:\Document\ProjectA\Sample.cs(2,17): error CS0234: The type or namespace name 
'ProjectC' does not exist in the namespace 'XYZ' (are you missing an 
 assembly reference?)

Compilation failed.
0 Warning(s)
2 Error(s)

请帮助我从命令提示符编译解决方案。 示例代码:

using XYZ.ProjectB;
using XYZ.ProjectC;
using System;


namespace XYZ.ProjectA
{
    public class Sample : ISample
    {
        public Void GetMessage()
        {
            var s=XYZ.ProjectB.GetList();
            Console.Write("");      
        }
    }
}

ProjectB和Project C也是.Netstandard Lib

我通过使用 MSBuild

构建项目成功解决了上述问题

正如我之前提到的,在服务器中安装以下框架后,

 1. .Net Framework 4.6.1 
 2. .Net Framework 4.6.1 Targeting pack
 3. Microsoft Build Tools 201

并且我正在尝试从未安装 Visual Studio 的服务器构建针对 .NET Standard 的可移植项目,我设法从一台确实安装了 Visual Studio 的机器上复制了以下文件和文件夹] 安装到我的构建服务器。

  1. C:\Program Files (x86)\Microsoft SDKs\Portable\v14.0
  2. C:\Program Files (x86)\MSBuild\Microsoft\Portable
  3. C:\Program Files (x86)\ReferenceAssemblies\Microsoft\Framework.NETPortable
  4. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet

并在服务器上安装了 Microsoft .NET Portable Library Reference Assemblies 4.6

然后调用 MsBuild 版本来构建您的解决方案,

C:\Program Files (x86)\MSBuild.0\Bin\MsBuild.exe MySolution.sln 

以上步骤帮助我构建了 .NET Standard Libarary 项目,而无需在构建服务器上安装 Visual Studio。

希望以上信息对大家有所帮助!