zoukankan      html  css  js  c++  java
  • 【问题记录】—.NetCore 编译问题

     最近在协助验证Jenkins自动编译发布时,对一些.Net Core编译问题进行了解决;特记录一下

    一、编译生成netcoreapp目录问题

    • 问题现象

       .net core项目编译输出目录总是包含在【netcoreapp3.1】目录下,如图:

       

    • 解决办法

       在项目文件中(*.csproj)中添加节点:<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

       位置如下:

      <PropertyGroup>
        <OutputType>Library</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies><!--所有依赖文件拷贝到输出目录-->
        <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
        <ApplicationIcon />
        <StartupObject />
        <AssemblyName>CustomReportResolver</AssemblyName>
      </PropertyGroup>

    二、编译语言包问题 

    • 问题现象

        在编译某些项目时,产生了多个文件包如下图:

       

    • 产生原因 

        点开文件夹内,发现为:Microsoft.CodeAnalysis 包产生的文件(语言包)

       

    • 解决办法

       继续在项目文件中添加节点:<SatelliteResourceLanguages>zh-Hans</SatelliteResourceLanguages>指定语言包;如果不想要语言包可指定一个非语言包名的内容

       最终编译结果如下:

        

    三、Jenkins自动编译Nuget包还原问题

    • 问题现象

       由于程序中,大量使用了PackageReference方式引用nuget包,在使用Jenkins自动编译时,则使用 Nuget Restore 后,再使用 dotnet build 编译包。但是编译时总是失败提示以下内容:

       根据问题提示,明确包版本不是最新的导致,然后根据vs中dll目录中,删除后,再编译依旧提示错误。

    • 产生原因

       最终在网上找到原因:

    通过PackageReference的方式引用在Nuget包还原的时候会在obj目录下自动生成Nuget包引用的配置文件project.assets.json*.csproj.nuget.cache*.csproj.nuget.g.props*.csproj.nuget.g.targets

    最终通过对比Jenkins和Vs自动编译时生成内容发现包换成位置不同导致的:

      

    • 解决办法

     删除Jenkins编译时,所引用的包缓存中的包内容,重新编译;问题解决。

     

    希望记录的问题,能解决一些问题

  • 相关阅读:
    Luogu P4727 [HNOI2009]图的同构记数
    ARC 101 E
    JSOI2019 Round2 游记
    JSOI2019 Round1(十二省联考)游记
    Technocup 2019
    Codeforces Round #533 (Div. 2)比赛总结
    学习链接
    2018.12.29-2018.1.9安师大附中集训
    关于考试
    NOIP2018提高组 游记
  • 原文地址:https://www.cnblogs.com/cwsheng/p/13883581.html
Copyright © 2011-2022 走看看