为什么我的dotnet核心项目会重新编译?

时间:2017-03-10 02:41:08

标签: asp.net-core .net-core asp.net-core-1.0

我有两个非常相似的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

是什么导致重新编译被触发?为什么这两个项目中只有一个会触发重新编译?我可以完全阻止这种情况吗?任何和所有的帮助将不胜感激。如果我遗漏了任何重要信息,请告诉我。

1 个答案:

答案 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的版本或位数发生了变化

相关问题