【问题标题】:use .net core sdk in MSBuild project在 MSBuild 项目中使用 .net core sdk
【发布时间】:2020-08-11 11:41:49
【问题描述】:

我有一个 PCL 项目,每个平台都有不同的功能和类。我现在想实现 .net 核心支持。但我不能使用像UserControl 这样的控件,因为没有引用Microsoft.NET.Sdk.WindowsDesktop SDK。 .net 框架很容易实现,因为我只需要引用每个程序集...但是在 .net core 中,我无法引用程序集...

<Project Sdk="MSBuild.Sdk.Extras">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;xamarin.ios10;xamarin.mac20;xamarin.tvos10;monoandroid10.0;tizen40</TargetFrameworks>
    <TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">uap10.0.17763;net472;netcoreapp3.1;$(TargetFrameworks)</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition=" $(TargetFramework.StartsWith('net4')) And '$(OS)' == 'Windows_NT' ">
    ...
    <Reference Include="WindowsBase" />
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="System.Xaml" />
  </ItemGroup>

  <ItemGroup Condition=" $(TargetFramework.StartsWith('netcoreapp3')) And '$(OS)' == 'Windows_NT' ">
    ...
    <SDKReference Include="Microsoft.NET.Sdk.WindowsDesktop" />
  </ItemGroup>

这是我的可执行应用程序,引用上面的 PCL 项目;

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference ...... />
  </ItemGroup>

</Project>

我已经尝试过这个来引用 SDK,但它不起作用。

 <SDKReference Include="Microsoft.NET.Sdk.WindowsDesktop" />

【问题讨论】:

  • 我有一个解决方案,你可以查看我的答案。

标签: c# visual-studio .net-core msbuild sdk


【解决方案1】:

我现在想实现 .net 核心支持。但我不能使用控件 喜欢 UserControl,因为 Microsoft.NET.Sdk.WindowsDesktop SDK 没有被引用。 .net 框架很容易实现,因为我 只需要引用每个程序集......但在.net core中,我不能 引用程序集..

经过深入研究,发现Microsoft.NET.Sdk.WindowsDesktop不能被SDKReference使用。

作为建议,您可以创建一个自定义目标文件,然后将其导入您的 PCL 项目,以使用 Net Core SDK。

1) 在您的 PCL 项目文件夹中创建一个名为 custom.targets 的文件。

2)然后将这些添加到custom.targets:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

    <PropertyGroup>         
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UseWPF>true</UseWPF>
    </PropertyGroup>

</Project>

3) 将此导入到 PCL-Projectxxx.csproj 文件中。

<Import  Project="$(ProjectDir)custom.targets" Condition=" $(TargetFramework.StartsWith('netcoreapp3')) And '$(OS)' == 'Windows_NT' "/>

4) 然后重新启动您的项目。虽然有一些警告提醒你一些sdk被重复引用,你可以忽略它们,不会对你的项目产生任何影响。

您可以检查一下,这对我来说效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2018-06-18
    • 1970-01-01
    • 2018-02-02
    • 2021-03-02
    相关资源
    最近更新 更多