运用.net core配合VS 2015制作nuget包

本文介绍如何利用.netcore技术简化NuGet包的构建过程,通过代码编辑完成项目配置,避免额外操作,使得构建变得简单高效。具体包括环境搭建、项目结构调整、使用.netcore命令进行依赖项管理和打包等步骤,以及遇到的问题如中文目录乱码、构建失败的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      以往做nuget包我们一般要么用命令行,要么用nuget的图形化界面去做,但是一些操作比较麻烦.比如引入命名空间,引入第三方nuget包.今天,我们来讲解下一种全新的构建方式.

 

环境:

win10

VS2015 企业版

.net 全家桶(.net framework,dnx,.NET core)

 

Why:

      运用.net core+官方这种特殊类库项目,一切都可以用代码编辑完成,不需要做一些对我们来讲非常额外的工作,于是乎,构建变得无比简单.本人强烈建议以后做nuget类库的时候都用这样的方法.

 

步骤:

      环境搭建好后,我们在visual C#里面,新建一个类库(程序包)

      关于项目结构,参考参考链接,这里不做赘述.

      目前.net core尚不完善,system.web 都没了,于是我们要对默认的项目设置进行调整.

      打开project.json.这是项目描述,相当于以前nuget构建期间的xml,在框架节点,删除dotnet5.4

{
    "version": "1.0.0-*",
    "description": "FantasticCommonLibrary.Mvc.Core Class Library",
    "authors": [ "Z" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "net45": {
            "dependencies": {
                "UAParser": "2.1.0"
            },
            "frameworkAssemblies": {
                "System.ComponentModel.DataAnnotations": "4.0.0.0",
                "System.configuration": "4.0.0.0",
                "System.Net.Http": "4.0.0.0",
                "System.Web": "4.0.0.0",
                "System.Web.Extensions": "4.0.0.0"
            }
        },
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "FluentValidation": "6.1.0",
        "Microsoft.AspNet.Mvc": "5.2.3",
        "Newtonsoft.Json": "8.0.2"
    }
}

      保存以后,就会发现引用下面少了最新的那个框架.由于沿用旧的4.5.1点框架,生成也不再有意外.

 

      然后我们使用.net core的如下命令

cd <.xproj所在的那个目录>
:还原依赖项 dotnet restore :打包 dotnet pack

      之后在项目,bin/debug里面会看到2个文件:.nupkg和.symbols.nupkg.第一个文件就是我们想要的nuget包.至此,构建完成

 

      .nupkg是一个压缩包,用7z解压后打开里面的自述文件.nuspec.可以看到引用的nuget包和系统引用完好的在那里.

<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>FantasticCommonLibrary.Mvc.Core</id>
    <version>1.0.0</version>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <developmentDependency>false</developmentDependency>
    <authors>Z</authors>
    <owners>Z</owners>
    <description>FantasticCommonLibrary.Mvc.Core Class Library</description>
    <tags></tags>
    <dependencies>
      <group targetFramework=".NETFramework4.5">
        <dependency id="FluentValidation" version="[6.1.0, )" />
        <dependency id="Microsoft.AspNet.Mvc" version="[5.2.3, )" />
        <dependency id="Newtonsoft.Json" version="[8.0.2, )" />
        <dependency id="UAParser" version="[2.1.0, )" />
      </group>
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="System.ComponentModel.DataAnnotations" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Configuration" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Net.Http" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web.Extensions" targetFramework=".NETFramework4.5" />
    </frameworkAssemblies>
  </metadata>
</package>

 

bug:

  1. 目前.net core不支持中文目录,会乱码,导致找不到路径
  2. 项目有时生成失败,此时要删除project.lock.json.重新生成
  3. 引用System.Configuration的时候不知为何变成System.configuration(c变成小写),会导致构建失败.这时需要自己修改project.json的frameworkAssemblies节点.然后重新生成.

 

 

关于nuget一些文法的问题,请参见官方文档

 

参考链接:

.net core 官网

Create a New NuGet Package with DNX

nuget官方文档

 

<think>好的,我现在要帮用户解决在.NET MAUI项目中清理未使用或多余的NuGet的问题。首先,我得回想一下自己知道的关于NuGet管理和清理的方法。 首先,用户的问题集中在如何识别和移除那些不再需要的。可能的原因括项目依赖项变更,或者之前添加的现在不再使用。这时候,我需要考虑几种方法:手动检查、使用工具自动化分析,或者通过命令行操作。 手动检查的话,通常需要查看项目的.csproj文件,里面列出了所有引用的NuGet。但问题在于,手动检查可能不够全面,尤其是当项目较大时。所以可能需要更系统的方法。 接下来,Visual Studio自带的NuGet管理功能可能有用。用户可以在解决方案资源管理器中右键点击项目,选择“管理NuGet程序”,然后查看已安装的。这里可能需要逐一检查,但效率不高。有没有更好的工具呢? 我记得有一个叫做“NuGet Package Manager”的控制台,可以用命令来获取已安装的列表,比如使用`Get-Package`命令。不过,这只能列出已安装的,并不能直接判断哪些未被使用。这时候可能需要结合项目中的代码分析,或者依赖项分析工具。 另外,是否存在第三方工具可以帮助分析未使用的NuGet?比如,ReSharper或者dotnet format,或者专门的NuGet清理工具。例如,NuGetKiller或者Nuke,这些可能可以扫描项目并找出未引用的。不过需要确认这些工具是否支持.NET MAUI项目,因为MAUI可能有特定的依赖项。 还有一种方法是使用`dotnet CLI`命令,比如`dotnet list package`可以列出项目中的所有,然后结合`dotnet remove package`来移除不需要的。但同样,这需要手动确定哪些未被使用。 另外,我想到在构建项目时,编译器可能会提示某些未被引用,但通常只有在编译错误时才会显示。有没有办法在构建过程中检测未使用的呢?或者利用MSBuild的某些功能? 还有一个可能性是,使用依赖关系图工具。Visual Studio中的“解决方案依赖项”功能可以显示项目之间的依赖关系,可能帮助识别哪些NuGet被实际使用。但需要用户手动检查每个的引用路径。 此外,用户可能需要注意隐式依赖或传递依赖。有时候,移除一个可能会导致其他无法正常工作,因为它们是作为依赖被引入的。因此,在移除后,必须彻底测试项目,确保没有破坏现有功能。 总结一下,可能的步骤括: 1. 使用Visual Studio的NuGet管理器查看已安装的,并手动检查是否实际使用。 2. 使用`dotnet list package`命令列出所有。 3. 使用第三方工具分析未使用的。 4. 移除测试项目功能。 在回答时,需要详细说明每个步骤的操作方法,并提醒用户注意依赖关系和测试的重要性。另外,可能需要引用相关的文档或工具,比如提到的AdaNet框架的引用可能不太相关,但如果有其他相关的引用资源,可以加入。 现在,我需要确保这些方法适用于.NET MAUI项目。因为MAUI项目结构可能与传统.NET项目有所不同,某些工具可能不支持。需要确认提到的工具是否兼容MAUI,或者是否有其他特定的建议。 例如,Visual Studio 2022对MAUI的支持较好,NuGet管理器也应该能正常使用。而使用CLI命令`dotnet list package`在MAUI项目中同样有效,因为MAUI基于SDK风格的项目文件。 最后,生成相关问题时要围绕清理NuGet的方法、工具推荐、依赖管理以及常见问题处理等方面展开。</think>### 如何清理.NET MAUI项目中未使用的NuGet? 以下是清理未使用或多余NuGet的分步方法: --- #### **方法1:通过Visual Studio手动检查** 1. **查看已安装的** 在解决方案资源管理器中右键单击项目 → 选择“管理NuGet程序” → 切换到“已安装”标签,查看所有NuGet。 2. **检查实际引用** 逐个检查每个是否在代码中被使用(例如`using`语句或项目依赖项)。若发现未被引用,可直接卸载。 --- #### **方法2:使用`dotnet CLI`命令** 1. **列出所有NuGet** 打开终端,进入项目目录,运行: ```bash dotnet list package ``` 这会显示项目引用的所有NuGet及版本。 2. **移除多余** 使用以下命令移除特定: ```bash dotnet remove package [PackageName] ``` *示例:`dotnet remove package Newtonsoft.Json`* --- #### **方法3:依赖关系分析工具** - **Visual Studio的“解决方案依赖项”功能** 在Visual Studio中,点击“解决方案” → 右键选择“解决方案依赖项” → 查看NuGet依赖树,识别未直接引用的[^1]。 - **第三方工具(如ReSharper)** 某些工具能自动检测未使用的NuGet,但需注意兼容性(确保支持.NET MAUI)。 --- #### **注意事项** 1. **传递依赖风险** 某些可能是其他的依赖项,移除后可能导致编译错误。移除前需检查依赖关系。 2. **测试验证** 移除后,需重新编译并运行项目,确保功能正常。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值