NuGet / Home

Repo for NuGet Client issues

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ManagePackageVersionsCentrally preventing restore with UsingTask from package

brinko99 opened this issue · comments

NuGet Product Used

Visual Studio Package Management UI

Product Version

.NET 8.0.302, VS 17.10.3

Worked before?

No response

Impact

It's more difficult to complete my work

Repro Steps & Context

Using ManagePackageVersionsCentrally with a package that includes a build task (i.e. UsingTask) that is referenced via GeneratePathProperty prevents the package from restoring with an "ResolvePackageAssets" task failed unexpectedly error.

The attached repo project includes the package MSBuild.Microsoft.VisualStudio.Web.targets, which defines a TransformXml task. When this task is used in an AfterTargets="BeforeCompile" target, the mentioned errors occur (see logs).

<ItemGroup>
  <PackageReference Include="MSBuild.Microsoft.VisualStudio.Web.targets" GeneratePathProperty="true" />
</ItemGroup>

<UsingTask TaskName="TransformXml"
           AssemblyFile="$(PkgMSBuild_Microsoft_VisualStudio_Web_targets)\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll"/>

<Target Name="PerformTransform" AfterTargets="BeforeCompile">
  <TransformXml Source="TestFile.xml" Destination="TestFile.xml" Transform="TestFile.xml" />
</Target>

The only workaround we've found is to apply a condition on every target that uses the task. e.g. Condition="'$(PkgMSBuild_Microsoft_VisualStudio_Web_targets)' != ''"

This issue does not occur when not using centrally managed packages.

CentralPackagesRepo.zip

Verbose Logs

NuGet package restore failed. Please see Error List window for detailed warnings and errors.

Error (active)	MSB4018	The "ResolvePackageAssets" task failed unexpectedly.
System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.NET.Build.Tasks.LockFileExtensions.<GetProjectFileDependencySet>g__IndexOfWhiteSpace|6_1(String s)
   at Microsoft.NET.Build.Tasks.LockFileExtensions.GetProjectFileDependencySet(LockFile lockFile, String frameworkAlias)
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.<WritePackageDependenciesDesignTime>g__GetPackageDependencies|59_0()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.WritePackageDependenciesDesignTime()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.WriteItemGroup(Action writeItems)
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.WriteItemGroups()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.Write()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter.WriteToCacheFile()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader.CreateReaderFromDisk(ResolvePackageAssets task, Byte[] settingsHash)
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader..ctor(ResolvePackageAssets task)
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ReadItemGroups()
   at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ExecuteCore()
   at Microsoft.NET.Build.Tasks.TaskBase.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()	CentralPackagesRepo	c:\program files\dotnet\sdk\8.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets	266