Cake 构建 - 带有 PackageReferences 的 NugetRestore
Cake build - NugetRestore with PackageReferences
我有一个 Visual Studio 2017 解决方案,其中包含 .NET Standard、.NET Core 和 .NET Framework 项目。我的 .NET Framework 4.6.2 项目在 .csproj 文件中使用 PackageReferences,而不是 packages.config.
这似乎是指定 NuGet 包的新方法,并且允许将来迁移到 .NET Standard 2.0(我希望如此)。
https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files
csproj:
<ItemGroup>
<PackageReference Include="LanguageExt.Core">
<Version>2.1.1</Version>
</PackageReference>
<PackageReference Include="Microsoft.SqlServer.Dac">
<Version>1.0.3</Version>
VS 显示很酷的图标:
无论如何,该解决方案在 Visual Studio 下编译正常,但在通过 cake 编译时失败并出现构建错误。
Databases\DatabaseInstaller.cs(5,27): error CS0234: The type or namespace name 'Dac' does not exist in the namespace 'Microsoft.SqlServer' (are you missing an assembly reference?) [C:\code\Core.AcceptanceTesting\Core.AcceptanceTesting.csproj]
cake build 是否支持这些更新的"PackageReferences"?
这是我的蛋糕脚本中的一个片段:
// NuGet restore packages for .NET Framework projects (and .NET Core projects)
Task("NuGet-Restore")
.IsDependentOn("Clean")
.Does(() =>
{
NuGetRestore(solutionFile);
});
// NuGet restore packages for .NET Core projects only
Task("DotNetCoreRestore")
.IsDependentOn("NuGet-Restore")
.Does(() =>
{
var settings = new DotNetCoreRestoreSettings
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix)
};
DotNetCoreRestore(settings);
});
// Build our solution
Task("Build")
.IsDependentOn("DotNetCoreRestore")
.Does(() =>
{
DotNetCoreBuild(
solutionFile,
new DotNetCoreBuildSettings()
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix),
Configuration = configuration
});
});
您使用的是哪个版本的 Cake? .Net Core 别名最近更新以反映 API 表面的一些变化。如果您尝试以下操作会发生什么:
var settings = new DotNetCoreRestoreSettings
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix)
};
DotNetCoreRestore(solutionFile, settings);
即包括解决方案文件的路径。
按照这个例子:
https://github.com/cake-contrib/Cake.Recipe/blob/develop/Cake.Recipe/Content/build.cake#L128
我下载了您的存储库并开始构建。使用下面的构建定义。它在 Visual Studio 中工作的原因是因为它使用 MSBuild 和 Nuget.exe。不要在 NET Framework 上调用 DotNetCoreX 命令。
Task("Build")
.IsDependentOn("NuGet-Restore")
.Does(() => {
MSBuild(solutionFile);
});
我有一个 Visual Studio 2017 解决方案,其中包含 .NET Standard、.NET Core 和 .NET Framework 项目。我的 .NET Framework 4.6.2 项目在 .csproj 文件中使用 PackageReferences,而不是 packages.config.
这似乎是指定 NuGet 包的新方法,并且允许将来迁移到 .NET Standard 2.0(我希望如此)。 https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files
csproj:
<ItemGroup>
<PackageReference Include="LanguageExt.Core">
<Version>2.1.1</Version>
</PackageReference>
<PackageReference Include="Microsoft.SqlServer.Dac">
<Version>1.0.3</Version>
VS 显示很酷的图标:
无论如何,该解决方案在 Visual Studio 下编译正常,但在通过 cake 编译时失败并出现构建错误。
Databases\DatabaseInstaller.cs(5,27): error CS0234: The type or namespace name 'Dac' does not exist in the namespace 'Microsoft.SqlServer' (are you missing an assembly reference?) [C:\code\Core.AcceptanceTesting\Core.AcceptanceTesting.csproj]
cake build 是否支持这些更新的"PackageReferences"?
这是我的蛋糕脚本中的一个片段:
// NuGet restore packages for .NET Framework projects (and .NET Core projects)
Task("NuGet-Restore")
.IsDependentOn("Clean")
.Does(() =>
{
NuGetRestore(solutionFile);
});
// NuGet restore packages for .NET Core projects only
Task("DotNetCoreRestore")
.IsDependentOn("NuGet-Restore")
.Does(() =>
{
var settings = new DotNetCoreRestoreSettings
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix)
};
DotNetCoreRestore(settings);
});
// Build our solution
Task("Build")
.IsDependentOn("DotNetCoreRestore")
.Does(() =>
{
DotNetCoreBuild(
solutionFile,
new DotNetCoreBuildSettings()
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix),
Configuration = configuration
});
});
您使用的是哪个版本的 Cake? .Net Core 别名最近更新以反映 API 表面的一些变化。如果您尝试以下操作会发生什么:
var settings = new DotNetCoreRestoreSettings
{
ArgumentCustomization = args => args.Append("/p:Version=" + versionPrefix + "-" + versionSuffix)
};
DotNetCoreRestore(solutionFile, settings);
即包括解决方案文件的路径。
按照这个例子:
https://github.com/cake-contrib/Cake.Recipe/blob/develop/Cake.Recipe/Content/build.cake#L128
我下载了您的存储库并开始构建。使用下面的构建定义。它在 Visual Studio 中工作的原因是因为它使用 MSBuild 和 Nuget.exe。不要在 NET Framework 上调用 DotNetCoreX 命令。
Task("Build")
.IsDependentOn("NuGet-Restore")
.Does(() => {
MSBuild(solutionFile);
});