首页
学习
活动
专区
圈层
工具
发布

将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样

将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 2018-06-20 01:22 NuGet...---- 准备工作 我们需要一个可以用来打 NuGet 包的 .NET Core 项目,只需要在 Visual Studio 中新建一个即可。在本例中,我的项目名字是 Walterlv.Demo。...将源码加入 NuGet 包 在 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) 中,我说到了项目文件中的各种 NuGet 属性。...这种带后缀形式的包在只是 NuGet 的辅助包而已,不是主包。...安装 NuGet 包时引入源码 为了让源码能随着包的安装加入到目标项目,我们需要 targets 文件来将源码引入。 在项目中新建 Assets 文件夹,这将用来放即将存入 NuGet 包中的文件。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    dotnet build

    项目通过项目引用或 NuGet 包引用所依赖的其他库。 对于目标版本低于 .NET Core 3.0 的可执行项目,通常不会将 NuGet 中的库依赖项复制到输出文件夹。...而是在运行时从 NuGet 全局包文件夹中对其进行解析。 考虑到这一点,dotnet build 的产品还未准备好转移到另一台计算机进行运行。...--no-self-contained 将应用程序发布为与框架相关的应用程序。 必须在目标计算机上安装兼容的 .NET 运行时才能运行应用程序。 自 .NET 6 SDK 起可用。...这是用于设置运行时标识符 (RID) 的简写语法,其中提供的值与默认 RID 相结合。 例如,在 win-x64 计算机上,指定 --os os 会将 RID 设置为 os-x64。...--source 要在还原操作期间使用的 NuGet 包源的 URI。 -v|--verbosity 设置命令的详细级别。

    2.7K20

    使用 Microsoft.Net.Compilers 在旧版本的 Visual Studio 201320152017 中开启新的 C# 7.x 和 C# 8 语法

    而使用 Microsoft.Net.Compilers 这款 NuGet 包就可以做到。...这是一个 .NET 的编译器包,无论你系统中安装的是什么版本的 C# 编译器,使用此包都可以强制项目使用某个特定版本的 C# 编译器。...使用 Microsoft.Net.Compilers 第一步:安装 .NET Framework 4.6 或以上 Microsoft.Net.Compilers 对项目本身没有什么要求,但需要编译项目的计算机上安装有完整功能的...这是开发者计算机上的事情,不影响产品的 .NET Framework 版本需求。如果你连系统也比较旧,那么安装下最新版本的 .NET Framework 即可。...第二步:安装 NuGet 包 Microsoft.Net.Compilers 在你需要编写最新版本 C# 的项目中安装 NuGet 包 Microsoft.Net.Compilers。

    1.6K20

    将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj

    EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 这台计算机上缺少此项目引用的...使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。...从对比中我们就能明显看出新 csproj 文件的优势: 文件小,易读易写 在版本管理中更容易解冲突 NuGet 包的引用没有路径要求,这意味着开发者可以任意指定 NuGet 包的位置 嵌套的引用不需要重复指定...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Microsoft.NET.Sdk 的新 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。

    2.1K20

    一文了解Nuget的使用

    简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上,供其他开发者使用。可以大大的提高创建一个.NET应用的效率。...私有主机上,比如团队内部几个人可以访问。 消费者:很好理解,就是我们从nuget获取包的开发者。 简单的总结下这几个角色的关系:创建者创建一个nuget包,并发布到主机上。...然后使用者在可访问的主机上搜索安装nuget包到项目中,这样项目就可以利用包提供的功能。如图 ?...包选项框,则生成项目时会自动生成nuget包;包ID:是唯一的标识,用户搜索和使用就是通过包ID。...此清单可用于构建包装并向消费者提供信息。清单始终包含在包装中。

    1.7K10

    dotnet run

    若要运行应用程序,dotnet run 命令需从 NuGet 缓存解析共享运行时之外的应用程序依赖项。 因为它使用缓存的依赖项,因此,不推荐在生产中使用 dotnet run 来运行应用程序。...有关如何使用 NuGet 源的信息,请参阅 dotnet restore 文档。 以长格式传入时,此命令支持 dotnet restore 选项(例如,--source)。...这是用于设置运行时标识符 (RID) 的简写语法,其中提供的值与默认 RID 相结合。 例如,在 win-x64 计算机上,指定 --arch x86 会将 RID 设置为 win-x86。...例如,在 win-x64 计算机上,指定 --os os 会将 RID 设置为 os-x64。 如果使用此选项,请不要使用 -r|--runtime 选项。...(在本例中,--help 参数被传递到应用程序,因为使用了空白的 -- 选项): dotnet run --configuration Release -- --help 在仅显示最小输出的当前目录中还原项目的依赖项和工具

    2K20

    使用dotnet Cli向nuget发布包

    构建时生成Nuget包:顾名思义,除打包命令,构建时也会自动生成nuget包; 标记:帮助其他人定位你的包,了解包的能力。 给package设定一个唯一id,并填写其他属性。...如果你没有看到打包命令,你的项目可能不是SDk-style风格的项目,这是要使用 nuget.exe Cli(或者迁移到SDK-style项目,再使用dotnet Cli)。...Visual Studio构建项目并创建.nupkg文件,插看输出窗体,获取包文件的路径。...推送命令中的错误通常表明存在问题 , 如: 您可能忘记了更新项目的版本号,而尝试发布同签名的软件包。 您尝试使用主机上已存在的标识符发布程序包时,也会看到错误:名称“ AppLogger”已经存在。...如果您确认使用的是有效 API key,则此错误提示不准确,实际是命名冲突,从以上错误的“权限”部分无法完全看出这一点。更改程序包标识符,重建项目,重新创建.nupkg文件,然后重试push命令。

    1.6K10

    开始第一个插件【适用于v1.2-1.3】

    安装nuget包 Nuget是什么?点击学习 本SDK是多目标平台的SDK。...可以根据你的需求安装对应的nuget包,我们将这些nuget包称为平台支持包详细罗列如下: 平台 nuget包 酷Q(https://cqp.im) Newbe.Mahua.CQP Amanda(http...://www.52chat.cc/) Newbe.Mahua.Amanda 可以在同一个项目中安装多个平台支持包,如此一来,一个项目进行开发,多个平台同时支持。...除了安装平台支持包之外,还可以安装Newbe.Mahua.Tools.Psake这个nuget,我们称为开发工具包。 开发工具包提供了在开发过程中一些必要的自动化过程,例如版本打包等。...builder.RegisterType().AsImplementedInterfaces(); //将需要监听的事件注册,若缺少此注册,则不会调用相关的实现类

    52600

    MSBuildRoslyn 和 NuGet 的 100 个坑

    不存在的版本(新版本已修复) 如果某个包的特定版本在所有源中不存在,那么安装此包的项目再也无法更新或者卸载此包了(也就别想再编译通过了)。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Sdk 风格的 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。

    98930

    MSBuildRoslyn 和 NuGet 的 100 个坑

    不存在的版本(新版本已修复) 如果某个包的特定版本在所有源中不存在,那么安装此包的项目再也无法更新或者卸载此包了(也就别想再编译通过了)。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Microsoft.NET.Sdk 的新 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。

    1.7K20

    .NET MSBuild 扩展编译时什么时候用 BeforeTargets AfterTargets 什么时候用 DependsOnTargets?

    这也是 NuGet 源代码包的核心原理部分。...关于 NuGet 源代码包的制作方法,可以扩展阅读: 将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 从零开始制作 NuGet 源代码包(全面支持 ....)应该设成此 Target 的依赖。...例如我们做一个 NuGet 包,这个 NuGet 包的 .targets 文件中写了下面几个 Target: _WalterlvEvaluateProperties 用于初始化一些属性和参数,其他所有的...会根据 NuGet 包用户的设置有条件地引入一些额外的源代码 那么这个时候我们前面写的用于引入源代码的 _WalterlvIncludeSourceFiles 编译目标其依赖的 Target 会更多。

    82320

    制作通过 NuGet 分发的源代码包时,如果目标项目是 WPF 则会出现一些问题(探索篇,含解决方案)

    在安装此 NuGet 包后,目标项目将获得这些源代码。 你可以通过以下博客了解如何制作一个源代码包。...将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - 吕毅 Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 - 林德熙 SourceYard...我们是通过项目中设置了属性 BuildOutputTargetFolder 让生成的文件跑到这里来的,目的是避免安装此 NuGet 包之后,引用了我们生成的 dll 文件。...; } } } 编译 现在,编译我们的项目,发现完全可以正常编译,就像我在这篇博客中说到的一样: 将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样...,因为上面的代码可以使得项目文件的修改完全确定,不用随着开发计算机的不同或者 NuGet 包的数量和版本不同而变化。

    1.1K40
    领券