我有两个非常相似的dotnet核心REST API。当我去部署它们时,一个运行没有问题。但是,另一个在锁定机器之前将以下消息打印到日志:
Project app (.NETCoreApp,Version=v1.0) will be compiled because
the version or bitness of the CLI changed since the last build
是什么导致重新编译被触发?为什么这两个项目中只有一个会触发重新编译?我可以完全阻止这种情况吗?任何和所有的帮助将不胜感激。如果我遗漏了任何重要信息,请告诉我。
答案 0 :(得分:2)
是什么导致重新编译被触发?
当构建和运行程序时,.NET Core命令行界面(CLI)的版本和/或位数(x86或x64)发生更改时,会发生重新编译。
在命令行中,运行dotnet --version
查找版本,然后运行dotnet --info
查找位数。
为什么这两个项目中只有一个会触发重新编译?
这取决于您的具体设置。您的一个项目是使用与运行它的版本不同的CLI版本/位来构建。
我可以完全阻止这种情况吗?
对于给定项目,使用相同的CLI版本/位数构建和运行。您可以使用global.json
file's sdk.version属性或只安装一个版本的CLI来控制它。
如果您安装了多个版本的.NET CLI,则可以在本地重新创建错误。例如,假设您安装了以下两个版本,请使用CLI版本1.0.0-preview2-003156
创建并构建新的dotnet核心应用程序,然后使用CLI版本1.0.0-preview2-003133
运行它。
PowerShell:
cd C:/
New-Item -type Directory foobar
cd foobar
Add-Content -Path global.json -Value '{ "sdk" : { "version": "1.0.0-preview2-003156" }}'
dotnet new
dotnet restore
dotnet build
Clear-Content -Path global.json
Add-Content -Path global.json -Value '{ "sdk" : { "version": "1.0.0-preview2-003133" }}'
dotnet run
输出:
将编译项目foobar(.NETCoreApp,Version = v1.0),因为自上次构建以来CLI的版本或位数发生了变化