<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
<PropertyGroup>
<TargetFrameworks>net45;net461;net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net5.0;net6.0;net5.0-windows;net6.0-windows;net7.0;net7.0-windows;net8.0;net8.0-windows;net9.0;net9.0-windows;net10.0;net10.0-windows</TargetFrameworks>
<AssemblyName>NewLife.Core</AssemblyName>
<RootNamespace>NewLife</RootNamespace>
<AssemblyTitle>NewLifeæ ¸å¿ƒç»„ä»¶åº“</AssemblyTitle>
<Description>Core library of NewLife framework. Provides high-performance infrastructure for building scalable applications: logging (file/network), configuration (XML/JSON/HTTP), cache (memory/distributed), network (TCP/UDP/HTTP/WebSocket), serialization (binary/XML/JSON), APM tracing, IoC container, actor model, timer scheduler, plugin framework, and more. Supports .NET Framework 4.5 to .NET 10. æ ¸å¿ƒç»„ä»¶åº“ï¼Œä¸ºæž„å»ºå¯æ‰©å±•åº”ç”¨ç¨‹åºæä¾›é«˜æ€§èƒ½åŸºç¡€è®¾æ–½ã€‚æä¾›æ—¥å¿—(文件/网络)ã€é…置(XML/JSON/HTTP)ã€ç¼“å˜ï¼ˆå†…å˜/分布å¼ï¼‰ã€ç½‘络(TCP/UDP/HTTP/WebSocket)ã€åºåˆ—化(Binary/XML/JSON)ã€APM性能追踪ã€å¯¹è±¡å®¹å™¨ã€å¹¶è¡Œæ¨¡åž‹ã€å®šæ—¶è°ƒåº¦ã€æ’件框架ç‰ã€‚支æŒ.NET Framework 4.5至.NET 10全版本。</Description>
<Company>新生命开å‘团队</Company>
<Copyright>©2002-2026 NewLife</Copyright>
<VersionPrefix>12.0</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>
<AssemblyVersion>$(VersionPrefix).$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</AssemblyVersion>
<OutputPath>..\Bin</OutputPath>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>..\Doc\newlife.snk</AssemblyOriginatorKeyFile>
<NoWarn>1701;1702;NU5104;NU1505;NU1900;NETSDK1138;CS7035</NoWarn>
<AnalysisLevel>latest</AnalysisLevel>
<WarningsAsErrors>CA2007</WarningsAsErrors>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup>
<PackageId>$(AssemblyName)</PackageId>
<Authors>$(Company)</Authors>
<PackageProjectUrl>https://newlifex.com/core</PackageProjectUrl>
<PackageIcon>leaf.png</PackageIcon>
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>新生命团队;X组件;NewLife;$(AssemblyName)</PackageTags>
<PackageReleaseNotes>v12 å¤§ç‰ˆæœ¬ï¼šç½‘ç»œåº“é‡æž„——数æ®åŒ…å¼•ç”¨è®¡æ•°æ‰€æœ‰æƒæ¨¡åž‹ã€MessagePump 帧泵 + æ— çŠ¶æ€ IMessageCodec 啿 ˆï¼ˆæ•´åˆ PacketCodec/Handlers æ—ï¼‰ã€æ•°æ®ç®¡é“ Pipe/PipeReader/PipeWriterã€WebSocket 分片é‡ç»„ã€Unix 域套接å—ä¼ è¾“ï¼›ä»¥åŠ HTTP/WebSocket/åè®®æ ˆ/æ•°æ®ç®¡é“ 40+ 处缺陷修å¤ã€‚è¯¦è§ ChangeLog.md</PackageReleaseNotes>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<PackageReadmeFile>Readme.MD</PackageReadmeFile>
</PropertyGroup>
<ItemGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<!-- æºç”Ÿæˆå™¨ï¼šä½œä¸ºæž„建ä¾èµ–(ReferenceOutputAssembly=false ä¸å¼•用输出ã€ä¸æ³¨å…¥åˆ†æžå™¨ï¼‰ï¼Œ
SetTargetFramework é¿å…è·¨ TFM å商;分æžå™¨ç¨‹åºé›†åœ¨ä¸»åŒ…打包时嵌入 analyzers/dotnet/cs,下游引用主包å³è‡ªåŠ¨èŽ·å¾— -->
<ItemGroup>
<ProjectReference Include="..\NewLife.Core.SourceGenerator\NewLife.Core.SourceGenerator.csproj" ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" SetTargetFramework="TargetFramework=netstandard2.0" Private="false" />
<None Include="..\NewLife.Core.SourceGenerator\bin\$(Configuration)\netstandard2.0\NewLife.Core.SourceGenerator.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='net45' or '$(TargetFramework)'=='net461' or '$(TargetFramework)'=='net462' or '$(TargetFramework)'=='net5.0-windows' or '$(TargetFramework)'=='net6.0-windows' or '$(TargetFramework)'=='net7.0-windows' or '$(TargetFramework)'=='net8.0-windows' or '$(TargetFramework)'=='net9.0-windows' or '$(TargetFramework)'=='net10.0-windows'">
<DefineConstants>$(DefineConstants);__WIN__</DefineConstants>
</PropertyGroup>
<!-- net8.0+ï¼ˆå« -windows å½¢æ€ï¼‰å¸¸é©»å¯ç”¨ AOT/è£å‰ªåˆ†æžå™¨ï¼š0 å‘Šè¦æˆä¸ºæž„建期硬约æŸï¼Œä¸Ž AOT 支æŒåŸºçº¿ä¸€è‡´ã€‚
æ³¨æ„ SDK 会将 IsTrimmable ä¸€å¹¶ç½®çœŸï¼Œè¿™äº›ç›®æ ‡çš„ç¨‹åºé›†ä¼šåµŒå…¥ IsTrimmable å…ƒæ•°æ® -->
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net5.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="5.0.0" />
</ItemGroup>
<!-- net6.0/net7.0 的桌é¢å¼•用包钉在较低补ä¸ç‰ˆæœ¬ï¼ˆåކå²å†³ç–:é™ä½Žæ¶ˆè´¹è€…所需 WindowsDesktop è¿è¡Œæ—¶æœ€ä½Žç‰ˆæœ¬ï¼‰ï¼Œ
但 SDK 对已 EOL çš„ç›®æ ‡åªæŒ‰â€œå·²çŸ¥æœ€æ–°è¡¥ä¸â€ä¸‹è½½å¼•用包,解æžè¯·æ±‚ 6.0.0/7.0.0 时报 NETSDK1127。
这里显å¼ä¸‹è½½å¯¹åº”版本的引用包,使 packs 目录没有 6.x/7.x(未安装 net6/net7 SDK)的机器也能编译。 -->
<ItemGroup Condition="'$(TargetFramework)'=='net6.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="6.0.0" />
<PackageDownload Include="Microsoft.WindowsDesktop.App.Ref" Version="[6.0.0]" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net7.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="7.0.0" />
<PackageDownload Include="Microsoft.WindowsDesktop.App.Ref" Version="[7.0.0]" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net8.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="8.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net9.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="9.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net10.0-windows'">
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" TargetingPackVersion="10.0.0" />
</ItemGroup>
<!-- net*-windows 使用 System.Management è¿›è¡Œæ ‡å‡† WMI 查询(å射调用,é¿å…æ ¸å¿ƒåº“ç›´æŽ¥æš´éœ²è¯¥ç±»åž‹ï¼‰ -->
<ItemGroup Condition="'$(TargetFramework)'=='net5.0-windows' or '$(TargetFramework)'=='net6.0-windows' or '$(TargetFramework)'=='net7.0-windows' or '$(TargetFramework)'=='net8.0-windows' or '$(TargetFramework)'=='net9.0-windows' or '$(TargetFramework)'=='net10.0-windows'">
<PackageReference Include="System.Management" Version="9.0.5" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.1'">
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
<PackageReference Include="System.Memory" Version="4.6.3" />
<!-- 为旧版框架æä¾› ValueTask/IValueTaskSource ç‰ç±»åž‹ï¼Œæ”¯æŒ IAsyncEnumerable Stub -->
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net462'">
<PackageReference Include="System.ValueTuple" Version="4.6.2" />
<PackageReference Include="System.Memory" Version="4.6.3" />
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net45'">
<!--<PackageReference Include="System.Net.Http" Version="4.3.4" />-->
<!--<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />-->
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net45' or '$(TargetFramework)'=='net461' or '$(TargetFramework)'=='net462'">
<Using Include="System.Net.Http" />
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System.Management" />
<Reference Include="System.Net.Http" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Agent\**" />
<Compile Remove="Applications\**" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Remove="Agent\**" />
<EmbeddedResource Remove="Applications\**" />
</ItemGroup>
<ItemGroup>
<None Remove="Agent\**" />
<None Remove="Applications\**" />
</ItemGroup>
<ItemGroup>
<None Remove="Remoting\ApiClient.cd" />
<None Remove="Remoting\ApiServer.cd" />
<None Remove="UpdateInfo.txt" />
<None Remove="X组件.txt" />
<None Remove="说明.txt" />
</ItemGroup>
<ItemGroup>
<Content Include="..\Doc\leaf.png" Link="leaf.png" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<None Include="..\Readme.MD">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
</ItemGroup>
</Project>
|