首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET Standard中配置TargetFrameworks输出多版本类库

通过上面的步骤我们已经实现了多版本输出,但是实际的企业级业务系统开发情况比较复杂,还需要解决以下几个问题: 1、条件编译 2、引用本地程序集 3、NuGet方式引用程序集 4、XML文档输出 5、编码与....NET Standard 指定多个目标框架,可有条件地为每个目标框架引用程序集。...但是 .NET Standard 2.0 前面显示黄色警告符合。展开所有依赖项,.NET Framework 4.0 与 .NET Framework 4.5 都已经正确引用。 ?...静态文件如何指定复制行为等,或许会发现安装NuGet之后希望能编辑的文件仅仅只是一个链接而已,如何让它包含在项目里面呢,请参考微软官方文档 NuGet ContentFiles揭秘,带回解决方案级包的讨论...PackageReference 方式作为包管理格式,安装不支持执行install.ps1等powershell相关脚本,init.ps1解决方案第一次安装可用。

2.8K21
您找到你想要的搜索结果了吗?
是的
没有找到

C# 可空引用类型 Nullable 更强制的约束:将警告改为错误 WarningsAsErrors

启用可空引用类型 你需要先在你的项目中启用可空引用类型的支持,才能修改警告到错误: C# 8.0 如何在项目中开启可空引用类型的支持 - 吕毅 项目属性 项目属性中设置是比较快捷直观的方法。...项目上右键属性,打开“生成”标签。 在这里,可以看到“将警告视为错误”一栏: 无 所有 特定警告 可以看到默认选中的是“特定警告”且值是 NU1605。...NU 是 NuGet 中发生的错误或者警告的前缀,NU1605 是大家可能平时经常见到的一个编译错误“检测到包降级”。...1 NU1605;CS8600;CS8602;CS8603;CS8604;CS8618;CS8625 这些值的含义可以参考我的另一篇博客: C# 8.0 可空引用类型中的各项警告和错误 - 吕毅 记得改之前...WarningsAsErrors 前面使用属性面板指定时,有一个奇怪的默认值。实际上我们直接修改将固化这个默认值,这不利于将来项目跟随 Sdk 或者 NuGet 包的升级。

32030

项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)

$(Authors): 包的作者;建议指定 nuget.org 上的用户名,这样访客可以点击包作者查看到包作者的信息;多个名字用分号分隔。...$(PackageTags): 标签,用分号分隔;指定多个标签有助于用户 nuget.org 上搜索到你的 NuGet 包。...-- 如果 lib/**/*dll 中没有发现 dll,NuGet 打包过程中会有警告; 将这个属性设为 true 可以禁用警告;这在制作纯工具型 NuGet 包是非常有用。... 引用的项目或包中的指定部分是本项目的依赖项。默认为 all。 引用的项目或包中的指定部分不是本项目的依赖项,应该排除。... 引用的项目或包中的指定部分依然是本项目的依赖项,但是在打 NuGet不作为依赖项(不会传递到下一个项目)。

1.9K10

.NET Core中的包、元包与框架

以前版本的.NET Core工具(project.json和基于csproj的工具)默认情况下会指定一个框架和元包 。不过,现在,元包被目标框架隐式引用,这样一来每个元包都和目标框架关联在一起。...指定一个框架会隐式实现对元包引用,同时也会添加对元包依赖项的引用。这样,元包中的所有类库都能够被IDE智能感知,也可以被打包到你的应用中。...这些框架描述一组可用于你所指定的框架的API(和一些其它特征)。当加入新的API,这些框架的版本号也会发生相应的变化。...我们可以编写基于.NET Framework 4.6引用程序集的库,并以NuGet 包的方式 net46 lib 文件夹中发布这些库。...上图描述了这种双向关系。API指定并定义框架。框架选择资产。资产提供具体的API实现。

1K40

使用基于 Roslyn 的 Microsoft.CodeAnalysis.PublicApiAnalyzers 来追踪项目的 API 改动,帮助保持库的 API 兼容性

做库的时候,需要一定程度上保持 API 的兼容性 ---- 第一步:安装 NuGet 包 首先打开你的库项目,或者如果你希望从零开始也可以直接新建一个项目。...然后,为主要的库项目安装 NuGet 包: NuGet Gallery - Microsoft.CodeAnalysis.PublicApiAnalyzers 安装完成之后,你的项目文件(.csproj...创建纯文本文件的方法是项目上右键 -> 添加 -> 新建项...,然后在打开的模板中选择 文本文件,使用上面指定的名称即可(要创建两个)。...将警告变成错误 分析器的规则上面右键,可以为某项规则设置严重性。 这时,再编译即会报告编译错误。...一个新的版本发布后,就需要将 API 归档到 PublicAPI.Shipped.txt 文件中。

23020

如何创建一个基于命令行工具的跨平台的 NuGet 工具包

所以,我们需要进行“一番配置”,使得这个项目编译成一个NuGet 工具,而不是一个依赖包。...由于我们没有 lib 文件夹,所以 NuGet 会给出警告,NoPackageAnalysis 将阻止这个警告。...DevelopmentDependency 是为了说明这是一个开发依赖,设置为 true 将阻止包作为依赖传递给下一个项目。(事实上这又是官方的一个骗局!因为新版本的 NuGet 竟然去掉了这个功能!...; } } } 这样,使用 msbuild 或者 dotnet build ,就会弹出一个调试器选择界面。 ?...加入差量编译支持 本文的例子中,当你每次编译,虽然核心的编译流程不怎么耗时,不过那个命令却是每次都执行。如果你觉得此命令的执行非常耗时,那么建议加入差量编译的支持。

98020

帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖NuGet

如果你希望做一个 NuGet 工具包,那么这个包一定不能作为依赖传递给下一个包。典型的例子,做一个生成版本号的工具 NuGet 包,或者做一个代码分析器。...更新: 官方的 NuGet 更新到 4.9 及以上之后,此属性再次生效。...至于如何查看自己的 NuGet 版本号,请参见:获取 Nuget 版本号 - 林德熙 我试图寻找的解决方案 为 A 项目添加去除依赖的代码 我们创建一个项目 Walterlv.PackageDemo.A...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet改名的部分。...令人遗憾的结果 然而使用命令行编译的时候,就不按照预期工作了;如下图这样,B 项目中出现了对 A 的依赖。 ? 命令行编译使用这些命令效果都是一样的不管用。

91450

《从零开始学ASP.NET CORE MVC》:ASP.NET Core Web 项目文件(四)

PackageReference:顾名思义,此元素用于包含对为您的应用程序安装的所有NuGet包的引用。项目文件中,我们有以下2个NuGet包。...metapackage本身是没有任何的内容的,它只是包含了其他包的依赖信息。 您可以解决方案资源管理器中的NuGet下找到此元数据包,而NuGet又位于依赖项(Dependencies)下。...展开元数据包,您可以找到所有依赖项。 ?...ASP.NET Core 2.1及更高版本的默认项目模板,都是会使用这个包。 请注意,metapackage中没有版本号。 未指定版本,SDK会指定隐式版本。....NET Core团队建议依赖SDK指定的隐式版本,而不是包引用上显式设置版本号。 如果目前还不完全清楚,请不要担心。 我们将在即将发布的视频中详细讨论metapackage和隐式版本。

1.4K30

.NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖

如果你团队项目当中安装了 ILRepack 的 NuGet 包,那么无论团队其他人是否安装了 ILRepack 的工具,都可以使用 ILRepack 工具。...这个程序引用了一个 NuGet 包 Ben.Demystifier。为此带来了三个额外的依赖。...(注意到项目文件中我有额外引用一个其他的 NuGet 包 Ben.Demystifier,这是为了演示将依赖进行合并而添加的 NuGet 包,具体是什么都没有关系,我们只是在演示依赖的合并。)...缺少依赖 如果你使用 ILRepack 合并程序集的过程中出现了缺少依赖的错误,例如下面这样: 1 Mono.Cecil.AssemblyResolutionException: Failed to...将所有依赖合并指的是将缺少的依赖也一起作为命令行参数传入要合并的程序集中。 而另一种是增加一个参数 /lib,即添加一个被搜索的依赖程序集的目录。将这个目录指定后,则可以正确解析依赖完成合并。

97850

CSharp工程中的几个文件

若项目启动后报错:未能加载文件或程序集“XXXXXX”或它的某一个依赖项,找到的程序集清单定义与程序集引用不匹配,则应当检查下项目所引用的dll文件与Web.config中配置的dll文件信息是否一致。...="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net462" /> 默认sln文件所在目录下会生成packages...文件夹用于存放项目引用的Nuget包: 我们通过Nuget命令行或者Visual Studio中的图形界面来管理Nuget包,当Nuget包发生变更,packages.config与.csproj文件内容及...包位于%UserProfile%\.nuget\packages 可以使用.NET Core提供的CLI中的命令来获取nuget包的位置: dotnet nuget locals all -l ​ info...\plugins-cache 也可以使用Nuget自身命令来获取nuget包位置: nuget locals all -l ​ info : http-cache: C:\Users\xfh\AppData

1.3K10

是时候将WPF控件库从.Net Framework升级到.NET Core 3.1

新的csproj文件,顺便升级到新的SDK-style csproj文件有很多好处,包括更简洁可读的文件,新的NuGet引用方式,可以指定多个开发框架等。 更方便打包Nuget。...2. .NET 可移植性分析 升级前,保险起见需要使用.NET 可移植性分析器分析项目目标.NET平台上的可移植性。...要迁移到PackageReference,先尽可能升级引用的Nuget包,然后选中项目中的packages.config,右键菜单中选中“将 packages.config 迁移到 PackageReference...弹出的对话框会列出顶级的依赖项和传递的依赖项,还会询问是否将后者升级到顶级依赖项,这个项目无需做任何改变,直接点击“确定”: ? 迁移完成后会得到一个报告: ?...打开Kino.Toolkit.Wpf.csproj,会发现少了些东西,但多了下面这段,这段就是经过精简的Nuget引用,“管理Nuget程序包”的页面也可以看到已安装的Nuget变少了: ? ?

4.1K10

VisualStudio 2017 项目格式 自动生成版本号 添加注释防止警告生成的文件自动添加版本

最近我把很多项目都使用了 VisualStudio 2017 新项目格式,使用的时候发现一些比较好用的功能。...的,那么就需要做一些设置,继续阅读文本,我希望大家先看项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv 添加注释 如果需要在发布的...> $(OutputPath)\$(AssemblyName).xml 防止警告生成的文件...一些生成的文件会让 VisualStudio 编译警告,使用下面代码可以让 VisualStudio 不分析生成的文件 <Target Name="PragmaWarningDisablePrefixer...或者发布出去的包,可以通过查看 dll 的版本号就知道是哪个 <em>Nuget</em> 发布,因为 dll 的版本号和 <em>nuget</em> 的相同。

2.7K20
领券