我在哪里将ImplicitlyExpandDesignTimeFacades设置为false?

时间:2016-08-31 14:13:26

标签: c# .net visual-studio-2013 json.net

我的问题是here

我收到错误:

  

具有相同身份的程序集   ' System.Runtime.Serialization.Primitives,Version = 4.1.1.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'已经过了   进口。尝试删除其中一个重复的引用。

问题似乎是 Visual Studio 2013 Newtonsoft.Json System.Runtime.Serialization.Primitives 之间不兼容。

建议的解决方法是添加

<ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>

从浏览网页看来,这似乎需要进入 .csproj 文件,但我不知道确切的位置。如果我把它放在根节点下,我会收到错误。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

您可以将<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年后,请不要忘记删除该项目。

答案 1 :(得分:0)

我设法通过删除项目并重新创建它来重新解决此问题(重新添加类并重新导入NuGet包)。

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

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