意外的 csproj itemgroup/NativeLibs 删除文件重命名中的条目

问题描述 投票:0回答:3

每次重命名时我都会收到意外的 ItemGroup 条目。

如果我从界面

public interface IDoStuff
开始并将其重命名为
IDoStuffRename
,我会在保存时在我的 csproj 中得到这个:

<ItemGroup>
   <NativeLibs Remove="IDoStuffRename.cs" />
</ItemGroup>

删除或移动时不会发生这种情况。经过不断重构,随着时间的推移,这会严重污染 csproj 文件。

知道为什么会发生这种情况以及如何避免额外的条目吗?

我目前手动撤消它。

c# visual-studio .net-core project abcpdf
3个回答
1
投票

已确认,确实是 nuget 包 ABCPdf 导致了此行为。我可以通过添加包(或不添加包)来重复重现它。我在版本 11x 和 12x 的 dotnet core 解决方案上获得了它。

暂时手动删除这些引用。

PS:如果有人可以详细说明

NativeLibs Remove
对于构建意味着什么,我将不胜感激。


0
投票

很难看出 ABCpdf NuGet 包如何导致此问题,因为最终 NuGet 包只是 zip 中的一组文件。

Visual Studio 根据它在 NuGet 包中看到的内容将这些文件放在不同的位置。但即使这样也只会在安装时发生。

说到重构,这里唯一的罪魁祸首可能是 Visual Studio,因为它是唯一可以更改项目文件的工具,而且实际上没有安装发生。

简而言之 - 这是 Visual Studio 的一个错误,也可能是一个功能,在执行类似任务时,您会在各种 NuGet 包中看到这一点。

解决方案是升级Visual Studio,希望微软解决这个问题。


0
投票

快速猜测一下,我会说是的,这是 AbcPdf 正在这样做,因为 WebSupergoo 的人似乎使用了这个(在他们的 ABCpdf.targets 文件中)

<ItemGroup>
   <NativeLibs Include="$(MSBuildThisFileDirectory)**\*.*" Exclude="$(MSBuildThisFileDirectory)**\*.targets;$(MSBuildThisFileDirectory)**\*Settings.exe;$(MSBuildThisFileDirectory)**\TaskGardener.exe"/>
   <None Include="@(NativeLibs)" Visible="False">
     <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
   </None>
 </ItemGroup>

即TaskGardener.exe 和 Settings.exe 在做什么?

没有时间去探底……但很确定这是一个两倍的巧合!

© www.soinside.com 2019 - 2024. All rights reserved.