而 dotnet tool 包本身就是 NuGet 包,如果是在 dotnet 生成或 VisualStudio 中,只需要在 csporj 文件添加下面代码 true...就可以 这个 NuGet 包和其他的 NuGet 有什么不同 如果我需要手动打包,我先需要可执行文件,例如 Windows 下的 exe 文件,注意没有限制平台,也就是 Linux 也可以。...这里说的可执行文件在 Windows 下可能是 dll 哦,只要通过 dotnet 命令可以启动这个 dll 就可以 我假设拿到可执行文件和他的所有依赖文件,放在 lindexi 文件夹里面 接下来就是手工打包了...(AnyCPU) 请看下面路径 tools\netcoreapp3.1\any\ 请将 lindexi 文件夹里面的所有文件放在 any 文件夹里面,需要确定 any 文件夹里面存在可执行文件,如 NugetMergeFixTool.dll...Name 就是 nugetfix 中的命令,而 EntryPoint 就是入口文件,请将代码修改为你需要的代码 返回 packing 文件夹,创建 nuspec 文件,我期望阅读本文的小伙伴都知道 nuspec
这种情况,唯一的办法就是把那个不再可用的源从配置中删除,或者临时禁用掉出问题的源。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Sdk 风格的 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。
这种情况,唯一的办法就是把那个不再可用的源从配置中删除,或者临时禁用掉出问题的源。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Microsoft.NET.Sdk 的新 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。
自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference 发布于 2018-04-24 10:03...install.ps1 的存在是因为 packages.config 不支持 PackageReference 中的一些新特性(例如 NuGet 包中新的目录结构,例如包中自带的 msbuild targets...lib 根目录中的程序集将被忽略 lib 文件夹内的程序集都应该按照目标框架建立子文件夹,例如 net45、netstandard2.0、netcoreapp2.0。...而 PackageReference 的引用方式是自动管理依赖版本的,只要每个包都在允许的版本范围之内,就自动选择版本,并显示在解决方案的引用中。...4.0.0) 也就是说,引用的两个不同的包要求依赖相同包的不同版本,于是 PackageReference 无法隐式推断依赖包的版本。
项目通过项目引用或 NuGet 包引用所依赖的其他库。 对于目标版本低于 .NET Core 3.0 的可执行项目,通常不会将 NuGet 中的库依赖项复制到输出文件夹。...而是在运行时从 NuGet 全局包文件夹中对其进行解析。 考虑到这一点,dotnet build 的产品还未准备好转移到另一台计算机进行运行。...如果资产文件未就位,那么工具将无法解析引用程序集,进而导致错误生成。...可执行文件或库输出 项目是否可执行由项目文件中的 属性决定。...库的 IL DLL 不包含入口点,因此无法执行。 MSBuild dotnet build 使用 MSBuild 生成项目,因此它支持并行生成和增量生成。 有关详细信息,请参阅增量生成。
我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...,在这个文件夹中的文件会在编译时拷贝到输出目录(保持文件夹结构) + content/ // 这里放 .props 和 .targets 文件,会自动被 NuGet 导入,成为项目的一部分(要求文件名与包名相同...(如果你想了解更多 csproj 中的 NuGet 属性,可以阅读我的另一篇文章:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅)...事实上,我们还可以设置一个属性 ,将值指定为 tools,那么我们就能够将我们的输出文件打包到 NuGet 对应的 tools 文件夹下了。...如果你要在编译期间替换一个类而不是新增一个类,例如将 Class1.cs 更换成新类,那么需要将其从编译列表中移除: <!
.runtimeconfig.json 文件,其中指定了应用程序所需的共享运行时,以及运行时的其他配置选项(例如垃圾回收类型)。 应用程序的依赖项,将这些依赖项从 NuGet 缓存复制到输出文件夹。...有关如何使用 NuGet 源的信息,请参阅 dotnet restore 文档。 MSBuild dotnet publish 命令调用 MSBuild,后者会调用 Publish 目标。...默认情况下,MSBuild 会在 Properties/PublishProfiles 文件夹中查找,并假定 .pubxml 文件扩展名。...建议在发布配置文件中而不是在命令行中指定 PublishReadyToRun。 PublishSingleFile 将应用打包到特定于平台的单个文件可执行文件中。...若要避免嵌套发布文件夹,请指定一个不在项目文件夹正下方的发布文件夹,或从项目中排除发布文件夹。
从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目) - walterlv 如何创建一个基于 MSBuild Task 的跨平台的 NuGet...工具包 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 当我们创建的 NuGet 包中包含 .props 和 .targets 文件的时候,我们相当于在项目文件...-- 当生成 WPF 临时项目时,不会自动 Import NuGet 中的 props 和 targets 文件,这使得在临时项目中你现在看到的整个文件都不会参与编译。...WPF 临时项目不会 Import NuGet 中的 props 和 targets 可能是 WPF 的 Bug,也可能是刻意如此。...:从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目) 而下面的属性适合写到 .targets 里面,因为这里使用到了其他的属性: 1
在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会让用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译。...如果这时将会 MainWindow.xaml 放在了一个文件夹 View 只要有引用这个文件,无论有没设置是否隐藏,开发者都可以看到 View 文件夹,而且可以删除这个文件夹,如果删除了这个文件夹,那么就无法编译...但是如果放在 Target 里就无法看到引用的文件夹,也就无法删除文件夹,通过这个方法可以让我使用源代码打包 如使用下面的代码,即使没有设置 MainWindow 不可见,用户也是看不见这个文件 的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的 dll ,大家都知道如果引用的 dll 多了,软件启动速度也就是变慢了。...所以我就使用打包 nuget 包但是引用的是源代码的方式,这样开发者在安装 nuget 之后可以快速调试安装的库的源代码。
我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...所以请将所有的 NuGet 包资产都声明成私有的,方法是在 NuGet 包的引用后面加上 PrivateAssets="All"。...第二步:组织 NuGet 目录 刚刚生成的 NuGet 包还不能真正拿来用。事实上你也可以拿去安装,不过最终的效果只是加了一个毫无作用的引用程序集而已(顺便还带来一堆垃圾的间接引用)。...,在这个文件夹中的文件会在编译时拷贝到输出目录(保持文件夹结构) + content/ // 这里放 .props 和 .targets 文件,会自动被 NuGet 导入,成为项目的一部分(要求文件名与包名相同...如果你要在编译期间替换一个类而不是新增一个类,例如将 Class1.cs 更换成新类,那么需要将其从编译列表中移除: <!
在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会让用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译。...如果这时将会 MainWindow.xaml 放在了一个文件夹 View 只要有引用这个文件,无论有没设置是否隐藏,开发者都可以看到 View 文件夹,而且可以删除这个文件夹,如果删除了这个文件夹,那么就无法编译...="Designer" Generator="MSBuild:Compile" Visible="False"> 但是如果放在 Target 里就无法看到引用的文件夹..."> 源代码打包项目是为了解决很小的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的...所以我就使用打包 nuget 包但是引用的是源代码的方式,这样开发者在安装 nuget 之后可以快速调试安装的库的源代码。
尝试在本地从开始菜单打开开发命令提示符,或者从使用命令行调用本机的 VisualStudio 编译命令行 cmd> "C:\Program Files (x86)\Microsoft Visual Studio...盘符: 的方式 cmd> D: 这样就可以跳转到 D 盘,在进入指定的文件夹,可以输入 cd 文件夹 的方式 如果自己输入很容易就输入错误,推荐输入 cd 然后在资源管理器打开文件夹,将地址栏的文件夹拖进命令行...,也就是当前的工作文件夹不在指定的项目文件夹,可以在 msbuild 后面添加解决方案的路径。...Nuget 包 msbuild /t:restore // 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:restore 重新编译 msbuild "D:\lindexi...的清理,只是防止有逗比上传了 obj 文件夹 msbuild /t:restore 欢迎 nuget 包,注意添加自己的 nuget 网站,如果自己用了内部的 nuget 就需要自己添加 msbuild
在项目里面引用的资源,可以通过在引用的时候添加 Pack 属性设置打包,使用 PackagePath 属性设置打包的时候放在包里面的哪个文件夹 例如将项目里面引用的 林德熙是逗比.txt 打包放在 lib...如果我是需要在运行过程引用的一些 C++ 运行库,那么同样可以上面方法 另外在输出的时候也支持改名,例如在写 NuGet 的时候,在修改编译过程的 targets 和 props 文件是需要跟随包的名才能被执行...\tools\nuget.exe" DestinationFiles="$(OutputPath)\tools\nuget.exe" SkipUnchangedFiles="True">... 使用 $(MSBuildThisFileDirectory) 拿到当前文件的文件夹,此时通过上一层文件就可以拿到 NuGet 包的文件夹。...获取对应的文件进行输出到软件编译输出文件夹 关于文件复制请看 Roslyn 如何使用 MSBuild Copy 复制文件 如果这个库文件只是需要添加资源文件,不需要加上 lib 文件,也就是不添加引用,
项目(包含所以依赖的项目)依赖引用丢失,主要体现以下几点: 官方依赖包没有使用NuGet 内部项目引用通过本地引用,项目没有拉取则编译失败 NuGet包多个版本的引用 同属一个解决方案,但是项目分散到各个仓库...https://dist.nuget.org/win-x86-commandline/latest/nuget.exe 发布、还原.Net依赖包 MsBuild https://visualstudio.microsoft.com...安装MsBuild 在服务器47.115.111.58打开通过上面表格的链接下载VS的安装包,点开单个组件选项卡,勾选Msbuild,等待一会即可完成。 ?...如果没有配置好,接下来的应用项目可能会编译时还原包失败导致无法编译通过。 的地址,当时我没有修改地址的时候,因为路径有特殊字符导致无论如何都无法用msbuild编译通过。
创建nuget包 migrate Migrates a project.json based project to a msbuild based project....迁移基于project.json,以兼容msbuild的编译 clean Clean build output(s)....列出项目中的引用 nuget Provides additional NuGet commands....通过nuget参数并附加一些参数,可以进行nuget包管理的一些操作 msbuild Runs Microsoft Build Engine (MSBuild)....Installing Microsoft.Packaging.Tools 1.0.0-preview2-25401-01.
&将SDK解压到指定文件夹中 sudo mkdir -p /usr/dotnet/dotnet-2.0-preview && sudo tar zxf dotnet-2.0-preview.tar.gz...创建nuget包 migrate Migrates a project.json based project to a msbuild based project....迁移基于project.json,以兼容msbuild的编译 clean Clean build output(s)....列出项目中的引用 nuget Provides additional NuGet commands....通过nuget参数并附加一些参数,可以进行nuget包管理的一些操作 msbuild Runs Microsoft Build Engine (MSBuild).
这些插件是独立的可执行文件(.NET Core world 中的 runnables),NuGet 客户端在单独的进程中启动。...如果用户在没有此参数的情况下直接启动了插件可执行文件,则该插件可以提供信息性消息,而不是等待协议握手。...Framework.NET Framework %UserProfile%/.nuget/plugins/netfx 每个插件都应安装在其自己的文件夹中。...复制包中的文件Copy files in package 请求方向: NuGet > 插件Request direction: NuGet -> plugin 该请求将包含:The request will...该请求将包含:The request will contain: 包源存储库位置the package source repository location 使用当前凭据从包源存储库获取的 HTTP
,这个文件和 sln 文件刚好在相同的文件夹,所以通过这个方法就可以获得 sln 所在的文件夹 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv MSBuild...Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译 本文告诉大家如果在 Nuget 引用源代码的方式引用源代码,在 VisualStudio 的智能提示和 Resharper...,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置 Roslyn 如何在 Target 引用 xaml...Roslyn 通过 nuget 统一管理信息 在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。...本文提供一个方式,通过安装一个 nuget 包就可以自动填写信息。
在写 msbuild 脚本的时候,或修改项目文件的时候,将会使用到很多的微软提供的 Task 命令。...在需要复杂的编译的时候,可以通过自己定义一个任务用来定义编译 如何入门开发请看 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - walterlv 本文只会补充一些开发的过程会遇到的坑...版本选择 开发的 Task 需要引用以下两个库 Microsoft.Build.Framework Microsoft.Build.Utilities.Core 这也就默认要求使用 .NET Framework...包的 AssemblyFile 属性下,这个属性的定义请看代码 的还是 .NET Framework 的。 然后选用对应的文件夹。
领取专属 10元无门槛券
手把手带您无忧上云