如果包含的Nuget包中包含我项目中存在的文件,则无法加载我的项目。
我的Nuget包中包含appsettings.json
文件,由于我的项目也有appsettings.json
文件,因此我在Visual Studio 2017中收到以下错误:
(load failed) - Duplicated linked item found in the project: "C:\users\user\.nuget\packages\mypackage\contentFiles\any\netcoreapp1.1\appsettings.json"
如果我从我的项目(而不是Nuget包)中删除appsettings文件,项目加载正常,但该项目需要该文件才能工作。
我似乎无法从nuget包中删除appsettings文件,但这可能是我唯一的选择。
“dotnet pack
”似乎包含此文件,即使我的csproj文件未在"CopyToPublishDirectory"
所以问题是:
如何排除某些文件被打包(通过dotnet pack
)?
或者如何加载存在重复链接项的项目?
答案 0 :(得分:3)
我的设置与您的设置不同,但在尝试将现有项目添加到解决方案时,我收到了类似的错误消息。我尝试了一些东西,所以不确定到底有什么帮助解决了它,但这就是我所做的:
bin
和obj
文件夹csproj
文件中有几个PropertyGroup
和Item
个节点未使用或为空或指向不是的文件夹在磁盘上,所以我删除了那些节点。之后,我删除了项目并将其重新添加到解决方案中并成功加载。
答案 1 :(得分:1)
我设法让它上班。
默认情况下,打包所有内容文件。
要禁用此功能,我按如下方式编辑了csproj文件:
<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
<ItemGroup>
<Content Include="appsettings.*">
<Pack>false</Pack>
</Content>
<ItemGroup>
答案 2 :(得分:1)
这似乎在项目中发生(可能在其他事情中),这些项目引用了另一个项目,在这两个项目之间存在共享参考。
例如:
Parent project [references package/dll X]
|
*-> Child, failing project [also explicitly references package/dll X]
在我的情况下,从失败的项目中删除X引用有助于解决问题。