如何检查MSBuild是否使用.NET Core?

时间:2017-07-07 08:01:31

标签: msbuild .net-core

我正在使用Scripty.MsBuild在ASP.NET Core项目中生成一些文件。当我从VS2017构建时,目标成功运行,但是当我通过<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Style.Triggers> <DataTrigger Binding="{Binding IsDone}" Value="True"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </DataGrid.RowStyle> <DataGrid.Columns> <DataGridTemplateColumn Header="Info"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Description}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Deadline"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding InputDeadline}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> 构建时,我收到错误:

dotnet

我目前的解决方法是为Scripty.MsBuild.targets(31,5): error MSB4062: The "ScriptyTask" task could not be loaded from the assembly C:\Users\geirsagberg\.nuget\packages\scripty.msbuild\0.7.4\build\\..\tools\Scripty.MsBuild.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. 配置禁用Scripty.MsBuild

Release

这让我可以在调试模式下从VS构建,并在构建服务器上使用<PackageReference Include="Scripty.MsBuild" Version="0.7.4" Condition="'$(Configuration)'=='Debug'" /> 进行构建。

但是,我仍然希望能够在调试模式下本地执行dotnet(从VSCode运行)。因此,我需要根据Visual Studio的MSBuild是否正在运行或dotnet run版本有条件地包含PackageReference。据我所知,这两个版本号完全相同;我错过了什么吗?

MSBuild中是否有属性我可以用来区分VS MSBuild和dotnet

1 个答案:

答案 0 :(得分:6)

原来有一个属性MSBuildRuntimeType可以是CoreMonoFull。所以我可以这样做:

<PackageReference Include="Scripty.MsBuild" Version="0.7.4" Condition="'$(MSBuildRuntimeType)'!='Core'" />

Reference from SDK