我的VS2017 csproj(https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/)有一些问题。当我安装某些nuget软件包时,我会得到一些额外的文件被添加到我的项目中,而且大多数情况下,依赖关系甚至不能正常工作。它不会在较老的csproj上这样做。
两个例子:
对于VS2017项目中的类似问题,有什么了解的吗?
提前感谢您的帮助!
发布于 2018-06-14 08:52:27
对于VS2017项目中的类似问题,有什么了解的吗?
对于第一个示例,由于xdt转换,在PackageReference环境中不支持。这包括基于sdk的项目以及使用PackageReference而不是packages.config的经典的packages.config框架项目。您可以跟踪这个GitHub问题获得更多详细信息。还有一个样品包装,它展示了如何使用构建时逻辑来应用转换来在所有环境中工作。
对于第二个示例,您可以在依赖程序包CefSharp.Common的\build文件夹中找到一个CefSharp.Common.targets文件,在这个.target文件中,您可以看到以下代码:
<ItemGroup>
<CefSharpCommonBinaries32 Include="$(MSBuildThisFileDirectory)..\CefSharp\x86\*.*" />
<CefSharpCommonBinaries64 Include="$(MSBuildThisFileDirectory)..\CefSharp\x64\*.*" />
<CefSharpCommonBinariesAnyCPU Include="$(MSBuildThisFileDirectory)..\CefSharp\**\*.*" />
</ItemGroup>使用这个.target文件,nuget将在项目的x64和x86文件夹下包含文件。
在旧的.csproj项目中,安装nuget包后通过下面的代码导入的.target文件,您可以在项目文件.csproj中检查它
<Import Project="..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets')" />在项目运行时,将导入x86和x64文件夹下的文件。
当您使用新的.csproj项目(由文件project.assets.json导入的.target文件)时,当您将.target保存到project.assets.json中时,所有文件都将被导入到项目中。
这就是为什么您在安装软件包CefSharp.Common后获得了大量的dll文件的原因。因此,这不是一个问题,而是因为他们以不同的方式导入.targets。
如果不希望在项目中显示这些dll文件,则可以返回packages.config。
希望这能有所帮助。
https://stackoverflow.com/questions/50839577
复制相似问题