无法使用dotnet在linux上执行.NET应用程序

时间:2018-04-19 19:07:57

标签: .net visual-studio .net-core

我一直在寻找一种在.NET上执行Linux申请的方式,我发现了dotnet

前言

我能够在dotnet上配置Ubuntu 17.10.1,因此我尝试使用此命令创建一个简单的.NET应用程序:

dotnet new console -o hwapp

这很有效。该命令在hello world文件夹中创建了一个简单的hwapp应用程序,用于测试我是否正常执行:

cd hwapp
dotnet run

这已打印Hello World!,这很好,因为一切正常。

问题

我使用console创建了一个Visual Studio 17应用,此应用与dotnet创建的应用基本相同,并且包含一个简单的Hello World。 我将它传递给Ubuntu,特别是在console文件夹中,然后执行此命令:

cd console
dotnet run

但是,我很遗憾地收到了这条警告信息:

  

/usr/share/dotnet/sdk/2.0.0/Microsoft.Common.CurrentVersion.targets(1122,5):错误MSB3644:框架的参考程序集" .NetFramework,Version = v4.6.1& #34;没找到。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位到您想要的框架。 [/home/user/console/ConsoleApp1.csproj]   构建失败。请修复构建错误并再次运行。

我在互联网上搜索了这个错误,我发现安装的.NET框架与应用程序版本不兼容,所以我尝试将应用程序编译为较小版本的.NET框架,例如4.5但我得到了同样的错误。

我还将使用.csproj创建的console应用的dotnetVisual Studio控制台应用进行了比较,第一个具有此结构:

<Project Sdk="Microsoft.Net.Sdk">
   <PropertyGroup>
       <OutputType>Exe</OutputType>
       <TargetFramework>netcoreapp2.0</TargetFramework>
   </PropertyGroup>
</Project>

Visual Studio控制台(.csproj)

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{1E8D1AE9-C1A2-48D5-B183-3D958885A3BB}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>ConsoleApp1</RootNamespace>
    <AssemblyName>ConsoleApp1</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

有人可以帮我这个吗?我是dotnet的新人,我无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

您必须在Visual Studio项目选择中选择.Net Core,而不是旧技术.Net Framework。

https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio