展开

关键词

拥抱.NET Core,如何开发一个跨平台类库 (1)

支持net4和netcoreapp 接着我们想让类库支持目标的为:net4 net45 netcoreapp。 就可以达成net45和netcoreapp1.0的支持,(这种方式是理论上最优的,但可能只是一个梦,具体的会在下面的章节指出为什么),看上去像这样: ? 我们首先考虑一个问题,net45和net4是同一种性质的实现,只不过前者是后者的升级版,所以net4的大部分代码net45可以无缝支持,也就是说基于net4的代码不需要改动就可以让net45进行支持。 但netstandard是个新目标,其中包含了许多net平台上没有的类库,比如:wcf,System.Web.dll等,那么改如何在一个项目中与net4、net45共存呢? net4 net45 net451 net452 net4.6 net4.6.1 net4.6.2 netcoreapp1.0 uap10.0 win8.0 win8.1 wpa8.1 Mono/Xamarin

25120

msbuild Roslyn 行为详解

调用次数等于框架数量加一 如在框架为 <TargetFrameworks>net45;netcoreapp3.1;net6.0</TargetFrameworks> 那将会分别在 net45 netcoreapp3.1 IntermediateOutputPath 属性值 默认是使用 IntermediateOutputPath 表示 obj 下的缓存文件夹,可以用来输出构建相关的缓存文件,在多框架下,默认是加上框架的路径,如 obj\Debug\net45 Warning Text="IntermediateOutputPath: $(IntermediateOutputPath)" /> </Target> 在多框架 <TargetFrameworks>net45 TargetFrameworks> 下,以上代码输出如下 1>C:\lindexi\Code\Foo.csproj(17,3): warning : IntermediateOutputPath: obj\Debug\net45

9720
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,还有更多热门云产品满足您的上云需求

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

    FreeSql 配套工具,基于 Razor 模板实现最高兼容的生成器

    Name Version FreeSql.Provider.MySql NETStandard2.0、net452 FreeSql.Provider.PostgreSQL NETStandard2.0、net45 FreeSql.Provider.SqlServer NETStandard2.0、net451 FreeSql.Provider.Sqlite NETStandard2.0、net45 FreeSql.Provider.Oracle NETStandard2.0、net45 FreeSql.Extensions.LazyLoading NETStandard2.0、net45 MySqlConnector 的实现 mysql 是一个神奇的流行数据库 然后就有了现在新的驱动包: Package Name Version FreeSql.Provider.MySqlConnector NETStandard2.0、net45 然后 FreeSqlBuilder

    42430

    msbuild 项目文件常用判断条件

    Name="Lindexi" AfterTargets="CoreCompile" Condition="'$(Configuration)|$(TargetFramework)'=='DEBUG|net45 用上面的写法可能有逗比写了 Release-x 于是就判断不是发布下,此时就没有做发布的优化 判断平台 判断在 .NET Framework 4.5 运行 Condition="'$(TargetFramework)'=='net45 需要同时生效有两个写法,如判断只有在 .NET Framework 4.5 同时在调试下 Condition="'$(Configuration)|$(TargetFramework)'=='DEBUG|net45 '" 第二个方法是使用关键字 And 连接 Condition=" '$(TargetFramework)'=='net45' And $(Configuration)=='Debug'" 两个条件的或判断使用关键字 Or 连接 Condition=" '$(TargetFramework)'=='net45' or $(Configuration)=='Debug'" 判断宏 Condition="$(DefineConstants.Contains

    12720

    Roslyn 如何在 Target 引用 xaml 防止文件没有编译

    \TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\Debug\net45\TemporaryGeneratedFile _036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Debug\net45\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1 .cs D:\lindexi\github\BemateRaimarhas\obj\Debug\net45\App.g.cs D:\lindexi\github\BemateRaimarhas\obj\ Debug\net45\MainWindow.g.cs D:\lindexi\github\BemateRaimarhas\obj\Debug\net45\BemateRaimarhas_Content.g.cs obj\Debug\net45\BemateRaimarhas.AssemblyInfo.cs EmbeddedResource 嵌入资源 Properties\Resources.resx None

    31210

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

    \packages\MSTest.TestAdapter.1.2.0\build\net45\MSTest.TestAdapter.props" Condition="Exists('.. \packages\MSTest.TestAdapter.1.2.0\build\net45\MSTest.TestAdapter.props')" /> <PropertyGroup> < \packages\MSTest.TestFramework.1.2.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll< \packages\MSTest.TestAdapter.1.2.0\build\net45\MSTest.TestAdapter.props'))" /> <Error Condition=" \packages\MSTest.TestAdapter.1.2.0\build\<em>net45</em>\MSTest.TestAdapter.targets" Condition="Exists('..

    57320

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

    以下库项目面向 .NET Standard (netstandard1.4) 和 .NET Framework(net40 和 net45)的 API。 如何才能添加 net45 或者 netstandard2.1 的引用呢? 红色框内的配置,表示net40、.net45 和 netstand2.0 都需要“System.Net”引用(即统一配置),而实际只有 net40、.net45 才需要该引用,所以这里我们要使用 Condition 这样只有 .net40 与 .net45 条件下才引用“System.Net.dll”。保存后,发现 netstand2.0 下面的警告标示消失了。 net40 与 .net45 中没有引用。 ? 添加完后 csproj文件 会多出如下配置 ? NuGet 很智能,自动把 Condition 给加好了。

    61521

    .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结

    后来,由于对 .net framework 的支持,我把原本 Package A 的nuget 包修改了,改成了如下 <TargetFrameworks>netstandard2.0;net45</TargetFrameworks 问题来源:Linux上无法打包net45似乎是很正常的事,之前都是通过 windows docker 镜像打包好,然后推送到 nuget,但是由于公司网络的限制以及互通性上会有点问题,关于 .NET SDK 程序集的打包就遇到了无法在 Linux上打包 net45 程序集的问题,通过在 Github上跟踪 Issue,终于发现了解决办法。 具体如下: 3.1 问题描述 Target Framework 为 .net framework 4.5 的项目,可以不可以在 Linux 下 dotnet build 生成 net45 的dll 和 运行 dotnet pack 打包生成 net45 和 netstandard2.0 的包?

    80720

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

    } } MSBuild 在.csproj项目配置中定义多平台,要使用”TargetFrameworks”的XML节点来配置: <TargetFrameworks>netstandard1.6;net45 ;</TargetFrameworks> 如果要定义某个平台下的依赖引用的话需要如下定义: <ItemGroup Condition=" '$(TargetFramework)' == '<em>net45</em>' *平台代码 #endif 如果我们想在某个平台下,只编译某些文件,也是可以实现的: <ItemGroup Condition=" '$(TargetFramework)' == '<em>net45</em>' "> Reference Include="System" /> <Reference Include="Microsoft.CSharp" /> <Compile Include="Platforms\<em>net45</em>

    30220

    Roslyn 在项目文件使用条件判断 判断不相等判断大小判断文件存在判断多个条件使用的范围

    123"></Message> </Target> 因为TargetFramework是 netcoreapp2.0 会运行这个 Target ,如果这时修改 TargetFramework 为 net45 就不会运行这个代码 <Target Name="StanalurJikecair" AfterTargets="CoreCompile" Condition="$(TargetFramework)=='<em>net45</em> '"> <Message Text="123"></Message> </Target> 如果需要同时判断多个条件,如在 Debug 而且是 net45 就运行,可以使用下面代码 <Target ='<em>net45</em>'"> <Message Text="123"></Message> </Target> 现在运行msbuild可以看到输出了123如果修改为'$(TargetFramework )'=='net45'就判断不相等 判断大小 除了判断字符串,还可以判断字符串的大小,只能用来判断数值字符串,如果对于 16 进制的字符串,需要使用 0x 开始,如下面代码 <Target Name

    29910

    常用的Hadoop 文件查看工具

    > <packages> <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="<em>net45</em>" /> <package id="Microsoft.Data.Edm" version="5.2.0" targetFramework="<em>net45</em>" /> <package id="Microsoft.Data.OData " version="5.2.0" targetFramework="<em>net45</em>" /> <package id="Microsoft.Hadoop.WebClient" version="0.12.5126.42915 " targetFramework="<em>net45</em>" /> <package id="Microsoft.WindowsAzure.ConfigurationManager" version="1.8.0.0 " targetFramework="<em>net45</em>" /> <package id="Newtonsoft.Json" version="6.0.4" targetFramework="<em>net45</em>"

    36590

    发布 Rafy .NET Standard 版本 Nuget 包

    文件,使其支持多个 .NET 版本: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net45 TargetFrameworks> Rafy.csproj 文件中,为不同的版本添加不同的引用: <ItemGroup Condition="'$(TargetFramework)' == '<em>net45</em> private void EnsureLoaded() { if (_section == null) { #if <em>NET45</em>

    28930

    .NET Standard SDK 样式项目中的目标框架

    以下库项目面向 .NET Standard (netstandard1.4) 和 .NET Framework(net40 和 net45)的 API。 属性包括特定于实现的包: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netstandard1.4;net40;net45 -- 有条件地获取.NET Framework 4.5 目标引用 --> <ItemGroup Condition=" '$(TargetFramework)' == '<em>net45</em>' "> void Main() { #if NET40 Console.WriteLine("Target framework: .NET Framework 4.0"); #elif NET45

    35321

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

    > <packages> <package id="Microsoft.CodeAnalysis.FxCopAnalyzers" version="2.9.8" targetFramework="<em>net45</em> true" /> <package id="Microsoft.CodeAnalysis.VersionCheckAnalyzer" version="2.9.8" targetFramework="<em>net45</em> developmentDependency="true" /> <package id="Microsoft.CodeQuality.Analyzers" version="2.9.8" targetFramework="<em>net45</em> developmentDependency="true" /> <package id="Microsoft.NetCore.Analyzers" version="2.9.8" targetFramework="<em>net45</em> developmentDependency="true" /> <package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.19" targetFramework="<em>net45</em>

    1.2K10

    dotnet 新 sdk style 项目格式的一些命名空间和引用

    本文收集一些命名空间所在的引用 System.Net.Http 引用方法 <ItemGroup Condition="$(TargetFramework)=='<em>net45</em>'"> <Reference System.Net.Http.HttpClient System.Net.Http.HttpMethod System.Web 引用方法 <ItemGroup Condition="$(TargetFramework)=='<em>net45</em>

    22410

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

    \packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath> <Private>True</Private> </Reference> TargetFrameworks也就是写为复数的TargetFrameworks,把里面的一个框架修改为多个,请看下面 <PropertyGroup> <TargetFrameworks>net45 void Main() { #if NET40 Console.WriteLine("Target framework: .NET Framework 4.0"); #elif NET45 LanguageTargets>$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets> <TargetFrameworks>net45 > <Reference Include="PresentationFramework" /> </ItemGroup> </Project> 保存重新加载,可能需要修改平台,我这里使用 net45

    1.7K20

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

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net45;netstandard2.0</TargetFrameworks </Project> 在 dotnet-campus/MSTestEnhancer 项目中,只有 .NET Framework 4.5 才需要引用 System.ValueTuple,于是加上了 net45 --EXTERNAL_PROPERTIES: TargetFramework--> <ItemGroup Condition="'$(TargetFramework)'=='<em>net45</em>'"> <PackageReference

    34810

    .NET Standard 类库的使用技巧

    所以在编写代码时,建议在项目文件.csproj文件中做如下配置: <PropertyGroup> <TargetFrameworks>netstandard2.0;net45;net40</ <PropertyGroup> <TargetFrameworks>net40;net45;netstandard2.0;</TargetFrameworks> <!

    14620

    dotnet 新项目格式与对应框架预定义的宏

    void Main() { #if NET40 Console.WriteLine("Target framework: .NET Framework 4.0"); #elif NET45 的项目文件里面给不同的平台添加了哪些条件编译符可以使用 以下是预定义的宏 .NET Framework 所有 .NET Framework 都定义 NETFRAMEWORK 宏,此外对应不同的版本使用不同的宏 NET20 NET35 NET40 NET45

    33140

    .NET Standard 类库的使用技巧

    所以在编写代码时,建议在项目文件.csproj文件中做如下配置: <PropertyGroup> <TargetFrameworks>netstandard2.0;net45;net40</ <PropertyGroup> <TargetFrameworks>net40;net45;netstandard2.0;</TargetFrameworks> <!

    23010

    相关产品

    • 云+校园特惠套餐

      校园优惠套餐升级,云服务器1核2G10元/月起购

    热门标签

    扫码关注腾讯云开发者

    领取腾讯云代金券