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编译时,所引用的包缓存中的包内容,重新编译;问题解决。

     

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

  • 相关阅读:
    awk使用和详解
    Python【map、reduce、filter】内置函数使用说明
    virtualenv -- python虚拟沙盒
    python--threading多线程
    scrapy入门教程
    用两个栈实现队列
    重建二叉树
    从尾到头打印链表
    替换空格
    二维数组的查找
  • 原文地址:https://www.cnblogs.com/cwsheng/p/13883581.html
Copyright © 2011-2022 走看看