Directory.build.props 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <Project>
  2. <PropertyGroup>
  3. <Copyright>Copyright (c) .NET Foundation and Contributors.</Copyright>
  4. <MinClientVersion>2.12</MinClientVersion>
  5. <GenerateDocumentationFile>true</GenerateDocumentationFile>
  6. <Authors>.NET Foundation and Contributors</Authors>
  7. <PackageIcon>icon.png</PackageIcon>
  8. <PackageProjectUrl>https://github.com/dotnet/reactive</PackageProjectUrl>
  9. <PackageLicenseExpression>MIT</PackageLicenseExpression>
  10. <SignAssembly>true</SignAssembly>
  11. <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)ReactiveX.snk</AssemblyOriginatorKeyFile>
  12. <NoWarn>$(NoWarn);1701;1702;CS1591;NU5105</NoWarn>
  13. <DefaultLanguage>en-US</DefaultLanguage>
  14. <IncludeSymbols>false</IncludeSymbols>
  15. <IsTestProject>$(MSBuildProjectName.Contains('Tests'))</IsTestProject>
  16. <GeneratePackageOnBuild Condition=" '$(IsTestProject)' != 'true' and '$(CreatePackage)' == 'true' ">true</GeneratePackageOnBuild>
  17. <PackageOutputPath>$(MSBuildThisFileDirectory)artifacts</PackageOutputPath>
  18. <EmbedUntrackedSources>true</EmbedUntrackedSources>
  19. <PublishRepositoryUrl>true</PublishRepositoryUrl>
  20. <LangVersion>latest</LangVersion>
  21. </PropertyGroup>
  22. <PropertyGroup Condition="'$(Configuration)' != 'Debug'">
  23. <IncludeSymbols>true</IncludeSymbols>
  24. <SymbolPackageFormat>snupkg</SymbolPackageFormat>
  25. </PropertyGroup>
  26. <PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
  27. <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  28. </PropertyGroup>
  29. <ItemGroup>
  30. <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
  31. <PackageReference
  32. Include="Nerdbank.GitVersioning"
  33. Version="3.8.118"
  34. PrivateAssets="all"
  35. Condition="$(ProjectName) != 'Tests.System.Reactive.Uwp.DeviceRunner'" />
  36. </ItemGroup>
  37. <ItemGroup>
  38. <None Include="$(MSBuildThisFileDirectory)../Resources/Artwork/Logo.png" Pack="true" PackagePath="\icon.png"/>
  39. </ItemGroup>
  40. <ItemGroup Condition="'$(IsTestProject)' == 'true'">
  41. <PackageReference Include="coverlet.collector" Version="6.0.4" />
  42. </ItemGroup>
  43. <PropertyGroup Condition="'$(TargetFramework)'=='uap10.0.18362'">
  44. <!--
  45. See 0003-uap-targets.md ADR in documentation for the reasons behind these settings.
  46. -->
  47. <NoStdLib>True</NoStdLib>
  48. <TargetPlatformMinVersion>10.0.18362</TargetPlatformMinVersion>
  49. <TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
  50. <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
  51. <TargetFrameworkMoniker>.NETCore,Version=v5.0</TargetFrameworkMoniker>
  52. <TargetFrameworkIdentifier>.NETCore</TargetFrameworkIdentifier>
  53. <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
  54. <NugetTargetMoniker>UAP,Version=v10.0</NugetTargetMoniker>
  55. <DefineConstants>$(DefineConstants);WINDOWS_UWP</DefineConstants>
  56. <!-- At some point, it looks like a fully-qualified version number stopped resolving the TargetPlatformSdkPath
  57. and now it only works with 10.0, so the SDK no longer sets this for us in UAP targets. -->
  58. <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation('Windows', '10.0'))</TargetPlatformSdkPath>
  59. </PropertyGroup>
  60. <PropertyGroup>
  61. <AnalysisLevelDesign>7.0-default</AnalysisLevelDesign>
  62. <AnalysisLevelNaming>7.0-all</AnalysisLevelNaming>
  63. <AnalysisLevelPerformance>7.0-all</AnalysisLevelPerformance>
  64. <!-- Enable analyzers on older targets. -->
  65. <EnableNETAnalyzers>true</EnableNETAnalyzers>
  66. <!--
  67. Disabled diagnostics:
  68. CA1001 - types holding disposable fields should implement IDisposable. See next item.
  69. CA2213 - IDisposable types should Dispose any IDisposable fields. This rule finds over 600
  70. examples! These are all in subtle multithreaded or async code. Some of them appear
  71. not to be real problems. For example, there are places where schedulers retain
  72. references to IDisposable work items, but that IDisposable interfaces is only there
  73. to enable application code to cancel scheduled work, so it's not Rx's place to call
  74. Dispose. And there are more subtle cases where disposal is deferred to give threads
  75. a chance to shut down. Each of these likely needs individual review:
  76. https://github.com/dotnet/reactive/issues/1927
  77. IDE0028 - Suggests Collection expressions in place of construction, e.g. replaces new List<int>(x)
  78. [.. x]. To me, this is less readable, and it doesn't improve performance, as far as we know.
  79. Annoyingly, we don't seem to be able to configure this to apply only when it would not
  80. introduce a spread.
  81. IDE0056 - Use of index/range syntax - relevant types not available on all targets, so we can't
  82. IDE0057 do this.
  83. IDE0130 - Namespace does not match folder structure. Conforming to this would be a significant
  84. upheaval, and it's not clear that it would be an improvement.
  85. IDE0290 - Primary ctors. This diagnostic suggests them in a lot of places where we don't want
  86. them. E.g., in most types with multiple constructors I find I prefer not to have
  87. a primary ctor. Since this is all or nothing, we turn it off.
  88. IDE0305 - Suggests Collection expressions in place of .ToArray. E.g, wants to change this:
  89. _readyList.ToArray()
  90. to this:
  91. [.. readyList]
  92. This won't improve performance as far as we know (sometimes a reason for using that
  93. syntax), and it's not obviously an improvement in readability.
  94. IDE0306 - Suggests Collection expressions in place of construction, e.g. replaces new List<int>(x)
  95. [.. x]. To me, this is less readable, and it doesn't improve performance, as far as we know.
  96. CA1510 - use ArgumentNullException.ThrowIf (not available on all targets)
  97. CA1512 - use ArgumentOutOfRangeException.ThrowIfXxx (not available on all targets)
  98. CA1513 - use ObjectDisposedException.ThrowIf (not available on all targets)
  99. -->
  100. <NoWarn>$(NoWarn);CA1001;CA2213;CA1510;CA1512;CA1513;IDE0028;IDE0056;IDE0057;IDE0130;IDE0290;IDE0305;IDE0306</NoWarn>
  101. </PropertyGroup>
  102. <ItemGroup>
  103. <GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)analyzers.globalconfig" />
  104. </ItemGroup>
  105. </Project>