c# - 使用 .NET Framework 4.6.1 构建 .NET 标准库 1.4,无需 Visual Studio

标签 c# windows command-line msbuild .net-4.6.1

我们尝试使用 .NET Framework 4.6.1 使用命令提示符构建 .NET Standard Library 1.4 项目,而无需在 Windows Server 2012 RC2 中使用 Visual Studio,以实现自动化目的。

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

.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\14.0\Bin\MsBuild.exe MySolution.sln 

上述步骤帮助我构建了 .NET 标准库项目,而无需在构建服务器上安装 Visual Studio。

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

关于c# - 使用 .NET Framework 4.6.1 构建 .NET 标准库 1.4,无需 Visual Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45103386/

相关文章:

c# - DefaultAzureCredetials 无法通过 Visual Studio 进行身份验证 - 找不到 AzureServiceAuth\tokenProvider.json

c# - 将分钟转换为两位数

windows - 使用PowerShell,如何将最小化的应用程序切换到正常状态?

c# - 将 dotnet 核心 (.NET Core) 嵌入到 Windows/Linux 上的 native 应用程序中

linux - 如何列出目录中的所有文件并将结果导出到文本文件?

linux - 在 Linux 中通过命令行将 XLSB 文件转换为 csv

c# - 重复消除分配

c# - 如何滚动到富文本框中的字符串

python - 为什么在我的 Windows 机器上,我必须将命令写为 "py -m pip install "模块名”而不是只写 "pip install "模块名”?

oracle - 检测所有已安装的 Oracle 版本