Blu*_*eft 6 visual-studio nuget-package roslyn .net-standard visual-studio-2019
当我尝试使用 NuGet 包资源管理器发布我的包时,我看到以下警告:
确定性 (dll/exe):非确定性
确保为 CI 构建启用以下属性,
并且您至少使用 2.1.300 SDK:Run Code Online (Sandbox Code Playgroud)<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
然而,当我是属性添加到PropertyGroup(如描述在这里),VS 2019怪胎出这么厉害,我从字面上需要按Ctrl + Alt + Delete键将其关闭。
根据此页面,属性名称为<Deterministic>,但这似乎根本没有任何作用。
那么如何让确定性构建工作呢?
Visual Studio 2019,v16.7.1
.Net SDK 3.1.401 (LTS)
Pur*_*ome 12
一个更简单的答案是不要弄乱.csproj文件(呃!)并通过命令行在 CI 脚本中执行此操作。
将/p:ContinuousIntegrationBuild=true参数添加到命令中dotnet pack。
dotnet pack
-c $env:CONFIGURATION
/p:ContinuousIntegrationBuild=true
-p:PackageVersion=$env:APPVEYOR_BUILD_VERSION
Run Code Online (Sandbox Code Playgroud)
(将其全部写成一行。为了便于阅读,我将其多行显示)
注意:--no-build参数不在这里。我们需要再次构建它。或者您可以在此之前将该参数添加到构建步骤中。
这是取自我使用的示例 CI 文件。因此,当我处于release模式时,我将库打包到 nuget 中并发布它。
保持文件干净并远离.csproj文件(这很难理解和维护)。
我基本上只是在这篇博文中找到了答案:
\n\n\n虽然在 .NET SDK 项目中默认启用确定性构建,但还有一个额外的属性 ContinuousIntegrationBuild,可以在构建服务器上设置以标准化存储的文件路径。这些不应在本地开发期间启用,否则调试器将\xe2\x80\x99 无法找到本地源文件。
\n
<PropertyGroup Condition="\'$(TF_BUILD)\' == \'true\'">\n <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>\n</PropertyGroup>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |