我该在哪里将ImplicitlyExpandDesignTimeFacades设为false?

5

我有一个问题,具体描述在这里

我遇到了以下错误:

已经导入了同一标识为“System.Runtime.Serialization.Primitives、Version=4.1.1.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a”的程序集。请尝试删除其中一个重复引用。

问题似乎是 Visual Studio 2013Newtonsoft.JsonSystem.Runtime.Serialization.Primitives 之间的不兼容性。

建议的解决方法是添加:

<ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>

从网上搜索来看,似乎需要将此内容放入.csproj文件中,但我不知道具体放在哪里。如果我将其放在根节点下面,就会出现错误。有什么想法吗?

2个回答

15

您可以将<ImplicitlyExpandDesignTimeFacades>标记放置在项目文件的顶部,即第一个<PropertyGroup>中。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{75678902-8224-4222-BB33-756784B2FA29}</ProjectGuid>
    <OutputType>Library</OutputType>
    <RootNamespace>FooBar</RootNamespace>
    <AssemblyName>FooBar</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    ...
    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>
  </PropertyGroup>

-- 编辑:--

<ImplicitlyExpandDesignTimeFacades> 可以在使用 Visual Studio 2013 或 2015 时帮助你解决问题,但在 2017 版本中不需要:项目可能无法编译。升级到 2017 版本后,请不要忘记删除该项。


2
在使用 Visual Studio 2015 引用 netstandard 2.0 NuGet 包时,这个解决方案帮我解决了“多个程序集”的错误。 - Grrbrr404
2
这对我有用,但你能解释一下为什么它有效吗? - Storm Muller

0

我成功通过删除项目并重新创建(重新添加类和重新导入NuGet包)来解决这个问题。

我只能猜测,在更新NuGet包时,.csproj文件出了些问题。

我的一位同事在Visual Studio 2015中遇到了类似的问题。他通过在Visual Studio 2013中打开解决方案来解决了它。


我有同样的问题,但在vs 2015中运行良好,但在尝试在vs 2013中运行项目时却不行。 - Henrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接