从另一个解决方案添加dotnet 4.5项目

时间:2019-10-01 13:34:42

标签: .net

有一个git存储库,其中包含不同的项目和解决方案。我在.. \ Utils \ MyProject \文件夹中有一个项目

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net45</TargetFramework>
  </PropertyGroup>
</Project>

,当我尝试在.. \ Utils \ OtherSolution \ OtherProject文件夹中添加对项目的引用(不是我创建的)时,出现以下情况:

Project `C:\Users\username\source\repos\gitRepo\Utils\OtherSolution\OtherProject\OtherProject.csproj` cannot be added due to incompatible targeted frameworks between the two projects. Review the project you are trying to add and verify that is compatible with the following targets:
    - net45

该项目还针对4.5:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{FDFA263A-9C0E-410D-A0D7-D1F230EA95BB}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>OtherProject</RootNamespace>
    <AssemblyName>OtherProject</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <TargetFrameworkProfile />
  </PropertyGroup>

那是为什么,我该如何引用?

1 个答案:

答案 0 :(得分:0)

从评论中可以明显看出您的设置是这样的:

A-> B

A引用B,其中A是.NET项目,而B是.NET标准项目。

意识到这一点: .NET是完整框架,而.NET标准只是完整框架的一个子集。这意味着在您的设置中,您尝试尝试从仅包含完整框架子集的项目中引用完整框架。这行不通。

另一种可能的解决方法是:

C-> D 其中C是.NET标准项目,D是.NET项目。

这意味着为了解决您的问题,您应该将要在..\Utils\OtherSolution\OtherProject中共享的所有代码移到.NET标准类库项目中,并在..\Utils\MyProject\项目中对其进行引用。您根本无法从.NET项目中引用.NET标准项目。

您提到..\Utils\OtherSolution\OtherProject不是由您创建的,这意味着项目可能不受您的控制并且不可编辑。在这种情况下,变得困难。在这种情况下,引用该项目的唯一方法是使..\Utils\MyProject\成为.NET项目而不是.NET标准:

..\Utils\OtherSolution\OtherProject-> ..\Utils\MyProject\ 这两个项目都是.NET

一些其他来源:

.NET standard docs

A related question