【问题标题】:Custom "CoreLib" In .NET Core?.NET Core 中的自定义“CoreLib”?
【发布时间】:2019-07-12 09:48:24
【问题描述】:

尝试在 .NET Core 项目中获取自定义 CoreLib 以在 VS 2017 中加载。这在 .NET Framework 中非常简单,因为您只需要“NoStdLib”,但使用 .NET Core 似乎需要更多的零件。 我不断收到:“项目文件不完整。缺少预期的导入。”

<?xml version="1.0" encoding="utf-8"?>
<!--<Project Sdk="Microsoft.NET.Sdk">-->
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
        <ProjectGuid>{3DA06C3A-2E7B-4CB7-80ED-9B12916013F9}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>

    <!--<TargetFramework>netcoreapp2.2</TargetFramework>-->
        <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
        <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
        <ExcludeMscorlibFacade>true</ExcludeMscorlibFacade>
        <NoStdLib>true</NoStdLib>
        <NoCompilerStandardLib>true</NoCompilerStandardLib>

        <LangVersion>latest</LangVersion>
        <RootNamespace>System</RootNamespace>
  </PropertyGroup>

    <PropertyGroup>
    <AssemblyName>System.Private.CoreLib</AssemblyName>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
    <MajorVersion>4</MajorVersion>
    <MinorVersion>6</MinorVersion>
    <ExcludeAssemblyInfoPartialFile>true</ExcludeAssemblyInfoPartialFile>
  </PropertyGroup>

</Project>

不知道 System.Private.CoreLib.csproj 正在做什么,但不确定缺少的部分是什么?删除 "Sdk="Microsoft.NET.Sdk"" 会导致部分问题,因为我认为自定义 corelib 无法做到这一点

我的依据是:https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/System.Private.CoreLib.csproj

有谁知道 csproj 设置是什么来使它工作?我似乎找不到任何关于此的好信息。

【问题讨论】:

  • 这里可能有一些提示(不过是.net框架项目):github.com/mosa/MOSA-Project/blob/master/Source/Mosa.Korlib/…
  • .csproj 没有魔法。一切都是通过构建脚本完成的。特别是Microsoft.NET.Sdk 构建脚本确实将源文件收集到Compile 项目为 C# 编译器生成适当的命令行并调用它,等等。如果要删除它,则需要用其他东西替换它。您需要自己编写构建脚本或导入其他构建脚本。目前您的项目文件只是一组属性。 MSBuild 不知道如何处理它们。它没有要构建的目标。
  • @PetSerAl 为什么 构建脚本不允许 C# 7.3 那么呢?
  • @zezba9000 我在使用带有&lt;Project Sdk="Microsoft.NET.Sdk"&gt; 的C# 7.3 功能时没有问题。我不知道你的意思。
  • &lt;DisableImplicitFrameworkReferences&gt;True&lt;/DisableImplicitFrameworkReferences&gt;

标签: c# .net .net-core csproj


【解决方案1】:

感谢@PetSerAl:这正是我所需要的。 .NET Core 无法启动 lib(可能是因为我的原语等未完全实现)但编译了我的项目所需的所有 IL 而没有错误。

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

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>latest</LangVersion>

    <!-- Prevent .NET Core 3+ from generating exe -->
    <UseAppHost>false</UseAppHost>

    <!--Disable .NET Core SDK libs-->
    <NoStdLib>true</NoStdLib>
    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
  </PropertyGroup>

</Project>

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 2021-05-02
    • 1970-01-01
    • 2022-11-30
    • 2021-06-17
    • 2020-04-17
    • 2019-11-12
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多