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.
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