我一直在寻找一种在.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
应用的dotnet
与Visual 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
的新人,我无法解决这个问题。
答案 0 :(得分:1)
您必须在Visual Studio项目选择中选择.Net Core
,而不是旧技术.Net Framework。
https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio