如何使用dotnet(.NET Core)打包包含sql项目的sln文件?

B.维特

我有一个没有什么特别的.NET Core解决方案,让我们称之为它Application.sln,它包含12个C#项目和1个SQL项目。在Visual Studio 2017中,构建所有项目都没有问题,但是当我转到命令行使用打包项目时dotnet pack Application.sln --no-build,我立即遇到了sql项目问题。这是错误:

error MSB4019: The imported project "C:\Program Files\dotnet\sdk\1.1.0\Microsoft\VisualStudio\v14.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk

解密后,我发现第一部分C:\Program Files\dotnet\sdk\1.1.0来自我,使用dotnet而不是msbuild打包解决方案,并且由于SSDT无法安装到dotnet文件夹中,因此将失败。

最好是,我希望它忽略.sqlproj项目,而只打包.csproj项目,因为此后我将分别处理sql项目,但是我看不到有任何办法。有办法吗?看来我不能使用MSBuild样式通配符作为dotnet pack(***。csproj)的参数,因为这会引发单独的错误。

我曾尝试使用msbuild / t:pack,但这给了我其他问题(它说目标“ pack”在项目中不存在)。

有人对我有什么建议吗?如果有帮助,我想通过TeamCity进行此操作,但是所有这些问题也都存在于我的开发机器上。

马丁·乌尔里希

首先,如果要使用这些dotnet工具,则需要创建仅包含c#项目的第二个解决方案。如果您不想执行此操作,则始终可以直接从VS 2017开发人员命令提示符(dotnet restore=>msbuild /t:Restore等)直接使用msbuild命令

Pack目标仅适用于具有集成NuGet软件包支持的项目,该项目通过使用Microsoft.NET.SdkSDK(“新” csproj格式)或在NuGet.Build.Tasks.Pack与其兼容的项目中使用nuget软件包来实现。

如果要在解决方案上调用dotnet pack/msbuild /t:Pack而不在没有sql项目的情况下创建第二个解决方案,则所有项目都必须包含一个包目标。

一种简单的方法是Directory.Build.props在解决方案旁边创建一个包含以下内容的文件:

<Project>
  <Target Name="Pack" />
</Project>

该文件将自动导入目录层次结构中所有项目的开头,并Pack在其中定义一个空目标。然后,使用.NET SDK的项目将使用实际的NuGet包目标覆盖此目标。因此,msbuild /t:Pack将在SQL项目上将此空目标和Pack在c#项目上称为原始NuGet目标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET Core-何时使用“ dotnet new sln”

如何使用Visual Studio ASP.NET Core监视文件更改“ dotnet监视”

当我们使用 .net core 3.1 时,如何正确进行 dotnet 发布?

如何使用带有Asp.net 5(dotnet核心)的Serilog登录到SQL Server

如何更改项目的.sln文件的位置?

我如何在dotnet core(以前称为asp.net mvc6)中读取项目的版本

如何在.Net Core项目的解决方案中包含NuGet软件包?

.NET Core-'dotnet publish'命令如何工作?

使用dotnet run运行.NET Core App的多个并行实例

如何使用VSTS构建包含.NET Standard项目和.NET 4.7项目的.NET解决方案?

如何使用“ dotnet”工具构建.sqlproj项目?

Asp Net Core:如何复制相关项目的* .json配置/内容文件?

索引.net core 3.1项目的源文件时,使用TFS(2018)发布符号失败

如何通过dotnet将所有身份文件放入ASP.NET Core 2.1 MVC项目中?

如何拥有一个包含两个.Net Core项目的解决方案,并同时使用两个Startup.cs文件来设置服务?

如何打包包含需要放在$ PATH中的二进制文件的应用程序?

我可以使用csc.exe在.net框架中将一个cs文件编译为dll ...但是如何通过dotnet cli在dotnet核心中做到这一点?

如何自动增加.NET Core项目的版本(例如“ 1.0。*”)?

在同一解决方案文件中同时具有.NET Framework和.NET Core项目的Azure DevOps中构建.sln

如何使用 .bat 文件构建和运行 dotnet 核心项目?

.Net Core XUnit-未使用“ dotnet测试”指定测试源文件

ASP.NET Core项目的发布命令仅包含DLL文件

如何使用Aurelia CLI / ASP.NET Core优化单个项目的工作流程

如何在.Net Core 2项目的VSTS构建服务器上编译Typescript文件

如何使用dotnet sln将所有项目添加到单个解决方案中?

当使用`dotnet build`或`dotnet publish`时如何为参考项目指定构建配置?

如何打包针对.NET Core的可移植.NET库?

如何从 .NET Framework 项目创建自包含的 .exe 文件?

dotnet cli如何使用以前的SDK /框架创建项目?