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

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

7、配置多目标框架 关于如何指定多目标框架,请参考博客《.NET Standard SDK 样式项目中的目标框架》 我做的BIMFACE二次开发的接口的目标是支持 .NET Framework4.0...一、条件编译 在下图中可以看出,编译成功后,在项目的默认位置 bin\Debug 下生成了3个不同目录,分别对应3个目标版本。 ? 这是VS中默认的编译输出目录。...> 二、引用本地程序集 在下图中可以看出由于3个不同的输出类库中所引用的程序集是不同的,那么当编译时,一定是每个类库进行单独编译,这时就就需要通过某种方式告诉编译器当前编译的类库版本是什么,然后添加针对具体版本的第三方程序集引用....NET Standard 指定多个目标框架时,可有条件地为每个目标框架引用程序集。...展开所有依赖项,.NET Framework 4.0 与 .NET Framework 4.5 都已经正确引用。 ? .NET Standard 2.0 程序及引用有警告。

4K21

.NET 8 中 Android 资源生成的改进和变化

其中包含每个程序集的所有最终资源类。 什么是 Android 资源? 所有 Android 应用程序都包含一些用户界面资源。...新系统依赖于解析 aapt2 在构建过程中生成的 R.txt 文件。在运行 C# 编译器之前,将解析 R.txt 文件并生成新的程序集。...这向编译器发出信号,表明该程序集将在运行时被替换。(引用程序集是包含程序级 ReferenceAssemblyAttribute 的程序集。)...它包含一个从 Resource 类派生的类。它将存在于项目的 $(RootNamespace) 中。这是使现有代码能够正常工作的纽带 。因为Resource类的命名空间不会改变。...这个功能将适用于 net8.0-android 之前的任何 Android 程序集引用。 使用新系统构建的包不能与以前版本的.NET Android 一起使用。

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

    让一个 csproj 项目指定多个开发框架

    新 csproj 文件 在 如何组织一个同时面向 UWP/WPF/.Net Core 控制台的 C# 项目解决方案 - walterlv 一文中我讲了 .NET Standard 的方式,这种方式优势非常明显...但缺点是要求目标 SDK 支持对应的 .NET Standard 版本。 使用共享项目的方式则是直接共享了源码,只要在目标项目中指定了条件编译符,那么源码便能针对各种不同的目标框架进行分别编译。...这个时候,TargetFramework 是编译时自动指定的。 如果是对以上多框架的项目进行单元测试,考虑到编译的目标平台是多个的,单元测试项目也需要指定多个目标框架。...- Microsoft Docs 中只说了如何指定多个目标框架,并没有提及指定了多框架以后的坑。...所以,我们需要有方法来解决其第三方库引用的差异。这时需要在 csproj 文件中指定包含条件。

    1.2K10

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

    -- 默认情况下,使用 dotnet pack 打 NuGet 包时,也会顺便编译; 但设置此值为 true 后,就会像 nuget.exe 那样不进行编译了。...-- 默认是 true,如果指定为 false,那么项目编译输出的 dll 文件将不会被打包到 NuGet 包中。... 引用的项目或包中的指定部分是本项目的依赖项。默认为 all。 引用的项目或包中的指定部分不是本项目的依赖项,应该排除。... 引用的项目或包中的指定部分依然是本项目的依赖项,但是在打 NuGet 包时不作为依赖项(不会传递到下一个项目)。...如果你正试图用 NuGet 编写一个编译时工具,那么,你可能需要在所有引用的最后加上如下行,将所有的包引用都设为 PrivateAssets。

    2.6K10

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

    升级到Core的好处 去年中我曾考虑将我的控件库项目Kino.Toolkit.Wpf升级到.NET Core,不过很快放弃了,因为当时.NET Core是预览版,编译WPF还需要使用最新的Visual...新的csproj文件,顺便升级到新的SDK-style csproj文件有很多好处,包括更简洁可读的文件,新的NuGet引用方式,可以指定多个开发框架等。 更方便打包Nuget。...迁移到 PackageReference NuGet 引用 引用了Nuget包的旧.NET Framework项目会将引用的Nuget信息记录在packages.config文件中,例如在示例的项目中...在弹出的对话框会列出顶级的依赖项和传递的依赖项,还会询问是否将后者升级到顶级依赖项,这个项目无需做任何改变,直接点击“确定”: ? 迁移完成后会得到一个报告: ?...XmlnsPrefix等内容是为了方便在XAML内引用这个项目,具体可见命名空间这一段内容。 然后重新填一填应用程序和打包信息,可以看到项目文件中多了不少内容: ?

    5K10

    基于.net core实现项目自动编译、并生成nuget包

    首先:此解决方案包含多种版本的项目,如:有编译必须是x86平台,以及还有传统的.net foramework项目,以及多版本的.net core项目等。找到通用的解决方案还是用了不少的时间。...可是,如果你一个解决方法中即有x86项目、又有anycpu项目可怎么是好呢。解决办法:创建两个sln文件,一个用x86平台的编译,一个用于anycpu平台的编译。 ?...步骤以一个.net 4.6.1项目为例: 传统的.net framework项目 ?...还原相关引用 生成项目,根据提示引用相关类型,默认调整后的是 类库 文件,如果需要变成 应用执行程序,可以自己修正即可。 ? 生成并运行 在还原好依赖项,以及调整好输出类型后,即可完成 项目的迁移。...TargetFrameworks> 二、统一实现 在解决了上述三个主要问题之后,实现自动编译和出包就很简单。

    1.9K40

    .Net Core迁移到MSBuild的多平台编译问题

    Standard、Mono、UWP等多平台的条件编译、项目(包)引用、编译符号等问题。   ....NET Core已经将新的项目管理配置过渡回MSBuild编译系统中。...当然这篇文章也解释了MS为什么要这么做。   MSBuild 是一种基于 XML 的项目文件格式的项目配置文件。这种格式容易理解、易于扩展并且完全受 Microsoft 支持。...二、定义多平台 project.json 在project.json项目配置中定义多平台,使用的是”frameworks”节点来配置的,并且在每个平台节点下也配置了对应的项目引用或依赖。...,要使用”TargetFrameworks”的XML节点来配置: TargetFrameworks>netstandard1.6;net45;TargetFrameworks> 如果要定义某个平台下的依赖引用的话需要如下定义

    1.2K20

    在制作多框架项目的 NuGet 包时应该注意的问题(buildMultiTargetingTargetFrameworks)

    制作一个 dll 引用的 NuGet 包简直是一键完成,无论是不是多框架项目;制作 dotnet-tools 也是如此。...但如果需要自定义一些编译步骤,那么就需要在制作 NuGet 包时做很多的特殊处理了。 本文介绍制作适用于多框架项目的 NuGet 工具包时应该注意的问题。...,你需要在命令中指定执行这个 Target。...下面的代码如果在 build 文件夹中则会在编译过程输出一堆星号,而如果在 buildMultiTargeting 文件夹中则不会执行。而无论目标项目是否是多框架的。...如果你的 NuGet 包依然只有一个 build 文件夹,那么上面的所有 Targets 都是会执行的。

    90430

    理解 C# 项目 csproj 文件格式的本质和编译流程

    ItemGroup ItemGroup 是用来指定集合的地方,这与它的名字非常契合。那么这集合里面放什么项呢?答案是——什么都能放!...csproj 中的两个大头都这样不带语义,几乎可以说明 csproj 文件是不包含语义的,它能够用来做什么事情纯属由其他模块来指定;这为 csproj 文件强大的扩展性提供了格式基础。...本身并没有什么含义,但它们作为参数传入到了具体的 Task 之后便有了此 Task 指定的含义。...随后根据 PropertyGroup 里面设置的属性正确显示属性面板中的状态,根据 ItemGroup 中的项正确显示解决方案管理器中的引用列表、文件列表。...随后,执行编译过程。它们会按照 Target 指定的先后顺序来安排不同 Target 的执行,当执行完所有的 Target,便完成了编译过程。 新旧 csproj 在编译过程上有什么差异?

    3.5K10

    如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

    更新于 2018-09-01 00:07 MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展;利用这种扩展性,我们可以为我们的项目定制一部分的编译细节...所以请将所有的 NuGet 包资产都声明成私有的,方法是在 NuGet 包的引用后面加上 PrivateAssets="All"。...Visual Studio 解决方案中(其实对于不认识的文件,None 就是默认值);Include 表示相对于项目文件的路径(支持通配符);Pack 表示这一项要打包到 NuGet;PackagePath...上面的文件中,我们指定 Target 的执行时机为 CoreCompile 之前,也就是编译那些 .cs 文件之前。在这个时机,我们可以修改要编译的 .cs 文件。...我们找一个其他的项目,然后在 Visual Studio 中设置 NuGet 源为我们那个 NuGet 工具项目的输出路径。 ?

    1.9K10

    dotnet build

    项目通过项目引用或 NuGet 包引用所依赖的其他库。 对于目标版本低于 .NET Core 3.0 的可执行项目,通常不会将 NuGet 中的库依赖项复制到输出文件夹。...如果未指定项目或解决方案文件,MSBuild 会在当前工作目录中搜索文件扩展名以 proj 或 sln 结尾的文件并使用该文件。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 编译特定框架。 必须在项目文件中定义该框架。...如果指定了运行时标识符,则默认值为 true。 自 .NET 6 SDK 起可用。 --source 要在还原操作期间使用的 NuGet 包源的 URI。...针对特定运行时(本例中为 Ubuntu 18.04)生成项目及其依赖项: .NET CLI复制 dotnet build --runtime ubuntu.18.04-x64 生成项目,并在还原操作过程中使用指定的

    2.7K20

    .Net Core迁移到MSBuild平台(二)

    一、前言 在上一篇文章.Net Core迁移到MSBuild的多平台编译问题中,简单的讲了下新的项目配置文件中的节点配置,这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程的节点配置...做过完整迁移新项目配置文件的朋友,肯定会觉得新的项目配置文件Msbuild的配置太扯了,虽然能直接编辑项目文件,但整个配置文件中没有了像project.json中的智能提示,当你在打开文件后你就会发现以前很轻松能写出来的...json配置,现在已经什么都写不出来了,而且也没有文档可以参考,一般的情况下,往往开发人员就会关掉项目文件,打开NuGet管理器来进行包引用,但是这真的够用吗?...不是所有的配置都能用可视化的方法来完成。...,以后整个dotnet体系的构建过程也都得到了统一。

    2.1K20

    September Nebula3 SDK 中的新东西

    着手删除#ifndef/#define/#endif 这些防止重复include的宏, 因为几乎所有的编译器(VStudio, GCC, Codewarrior) 都支持#pragma once  把同的样...编译系统 重新组织了 VStudio解决方案的结构, 让所有的依赖工程都在一个解决方案中, 这样就不用再同时打开多个VStudio了 现在可以通过.epk编译脚本来导入VStudio工程(对于不在...Nebula3 SDK目录下的工程很有用) 新的"projectinfo.xml" 文件为一些有用的导出工具定义了工程和平台特有的属性 把 export.zip 档案文件分割到一个独立的平台无关文件和几个特定平台的文件...修正Core::RefCounted 和Util::Proxy 引用计数线程不安全的BUG 加入 WeakPtr 类用于更好地处理环形引用 在 Ptr中加入类型转换的方法 简化System...(InternalGraphics子系统在渲染线程这边,  Graphics 前端子系统在主线程这边) 加入了 CoreAnimation 和 Animation 子系统 (构造中) 为简单的用户界面加入了

    64840

    C#.NET 如何创建带有本机依赖的多框架多系统 NuGet 包

    包含构建时的一些自定义任务(如果有的化),可随着包依赖而传递执行。 + lib - 必须。放你最终被引用的托管程序集,将被引用。 + ref - 看情况,可能必须可能可选。...包制作方法 在前面的 7 种不同的组合中,我们最终会做出两种不同的包来: 只包含托管依赖或只包含本机依赖的“单包”,其特点为这些依赖只需拷贝到输出目录即可,项目本身不会直接依赖它们的类型(例如通过 P/...\runtimes 文件夹中的所有文件引入包中。...完成 编译这个项目,你将在输出目录下得到一个 NuGet 包,它已经具有正确的文件结构了。....NET Framework 项目,项目编译后,NuGet 会自动将本机依赖包里对应架构和框架的文件拷贝到输出目录中,于是你就能正常运行你的程序了。

    1.9K50

    从以前的项目格式迁移到 VS2017 新项目格式 必须删除必须修改添加文件项目引用引用包删除多余文件输入注释多个框架使用条件判断迁移 WPF 项目

    ,如何从以前的格式迁到新的格式,请看下面 下面从项目的第一行开始 原来的第一行是 编译 VisualStudio 会发现重复定义了一些值,需要删除 Properties/AssemblyInfo.cs 文件...(Configuration)就是用到了宏,他会替换当前编译的是 Debug 还是 release ,所以对于所有的项目都可以使用这个来生成 xml。...因为现在存在一些项目是使用多个开发框架,这时就需要修改TargetFramework为TargetFrameworks也就是写为复数的TargetFrameworks,把里面的一个框架修改为多个,请看下面...修改为你希望的框架就在指定的框架引用库。

    4.6K20

    一文了解Nuget的使用

    Nuget介绍 官网定义:NuGet是.NET的软件包管理器(免费)。NuGet客户端工具提供了生成和使用软件包的能力。NuGet Gallery 是所有软件包作者和消费者都使用的中央软件包存储库。...简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上,供其他开发者使用。可以大大的提高创建一个.NET应用的效率。...创建者:包的作者,创建一个项目,最终生成一个后缀名为.nupkg的文件,里面包含了编译代码DLL、与该代码相关的其他文件以及描述清单如版本等信息。...在.csproj文件中,我们发现添加了一下属性: TargetFrameworks>net452;netstandard2.0TargetFrameworks...nuget包已经生成了,什么是nupkg文件?.nuspec文件是包含程序包元数据的XML清单。此清单可用于构建包装并向消费者提供信息。清单始终包含在包装中。

    1.7K10
    领券