GitVersionTask v4和仅MSBuild项目

时间:2018-11-12 04:08:24

标签: msbuild nuget gitversion

这个用例可能有点不合时宜,但是我希望有人可以帮助我...

多年来,我一直维护着一个MSBuild命令的“库”,在我们称为CommonTasks.targets的文件中,该文件通过我们的内部NuGet服务器分发,该文件可以处理公司公司所需的各种任务。项目。在过去的几年中,我一直在使用GitVersion v3,既用于生成库自身的NuGet软件包版本号,也可以直接使用GitVersion的GetVersion MSBuild目标(例如,在生成相应的git标签时),以避免需要从依赖项目的程序集(构建后)中提取GitVersion生成的版本。

以前(对于GitVersion v3),仅需要我的CommonTasks.targets文件导入位于\build\dotnet\GitVersionTasks.targets的GitVersion的NuGet包中的GitVersionTask.targets文件。该目标文件依次执行必要的UsingTask命令(尤其是GitVersionTask.GetVersion),然后在导入后让我在自己的<GetVersion ...>文件中调用.targets

对于v4,GitVersionTask引入了对UtilPack.NuGet.MSBuild的依赖关系(我收集了有关各种NuGet命令的帮助)。首先,这意味着我需要导入其UtilPack.NuGet.MSBuild.props文件,否则GitVersionTask根本不会加载。但是,这样做之后,我现在尝试从MSBuild文件中调用GetVersion时遇到意外错误。看来,GetVersion目标现在尝试查询我所有已定义的NuGet存储库(nuget.org,本地缓存,我们的公司服务器等)以获取我的库的打包版本,最后我遇到此错误: / p>

  MSBUILD : NuGetTaskRunnerFactory error NR0001: [NuGet Error]: Unable to find package CommonTasks with version
 (>= 1.37.0-gitversiontask4-0001) [C:\redacted\CommonTasks\Build.proj]
MSBUILD : NuGetTaskRunnerFactory error NR0001:   - Found 108 version(s) in Source1 [ Nearest version: 1.36.3 ] [C:\redacted\CommonTasks\Build.proj]
MSBUILD : NuGetTaskRunnerFactory error NR0001:   - Found 42 version(s) in Source2 [ Nearest version: 1.36.3 ] [C:\redacted\CommonTasks\Build.proj]
MSBUILD : NuGetTaskRunnerFactory error NR0001:   - Found 0 version(s) in Microsoft Visual Studio Offline Packages [C:\redacted\CommonTasks\Build.proj]
MSBUILD : NuGetTaskRunnerFactory error NR0001:   - Found 0 version(s) in nuget.org [C:\redacted\CommonTasks\Build.proj]
  MSBUILD : Task factory error NMSBT003: Failed to find main package CommonTasks@. [C:\redacted\CommonTasks\Build.proj(47,9): error MSB4175: The task factory "Ut
ilPack.NuGet.MSBuild.NuGetTaskRunnerFactory" could not be loaded from the assembly "C:\redacted\CommonTasks\packages\UtilPack.NuGet.MSBuild.2.7.0\build\\net46\UtilPack.NuGet.MSBuild.dll". Object ref
erence not set to an instance of an object.

我不明白的是为什么它尝试尝试NuGet检索,即使这是新的默认行为,我也不知道禁用或禁止该方法的原因,我不知道为什么不工作。我认为错误与非正常的.NET项目有一定关系(即.targets文件,.csproj文件等都没有源代码)。但是我的库供许多普通的.NET项目使用,它们本身都使用GitVersionTask自动版本化其程序集。

目前,我已将库固定到GitVersionTask v3,但非常想弄清楚如何允许它像以前使用v3一样使用v4。我可能会改用GitVersion.CommandLine包,并解析其输出,但是我最终确实需要这些GitVersion生成的版本作为MSBuild属性,以便按预期使用它们。而且,对于也使用GitVersionTask(而不是CLI)的从属项目,可以为这两者使用单个程序包很方便。

是否有一种方法可以解决我正在使用GitVersionTask v4做的事情,或者通过某种完全不同(也许更优雅)的方法来实现我正在尝试做的事情?

0 个答案:

没有答案