在引用非dotnet核心项目时,Intellisense无法正常工作

时间:2016-08-18 13:47:56

标签: asp.net-core .net-core

我正在开发一个在Azure中的net46框架上运行的Visual Studio 2015 Update 3中的.net核心/ asp.net核心应用程序。我在我的解决方案中有一些项目文件,其中一些是用dotnet核心编写的,其中一些是从另一个解决方案导入的(dotnet 4.6)。

我的解决方案构建并运行良好,但Intellisense(也运行ReSharper)在引用非核心库的代码下放置了红色波浪线。

我的project.json看起来像这样:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "dependencies": {

    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",

    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc2-final",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",

    "Autofac": "4.0.0-rc2-240",
    "Autofac.Extensions.DependencyInjection": "4.0.0-rc2-240",

    "AutoMapper": "4.2.1.0",

    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0-rc2-final",
    "Microsoft.ApplicationInsights.TraceListener": "2.0.0",

    "XXX.SystemCore": "1.0.0-*",
    "XXX.Services": "1.0.0-*"
  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview2-final"
    }
  },
  "frameworks": {
    "net46": {
      "dependencies": {
        "XXX.SystemCore": {
          "target": "project"
        }
      }
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "appsettings.json",
      "web.config"
    ]
  },
  "runtimeOptions": {
    "gcServer": true
  },
  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

以下项目是非核心项目:

"XXX.SystemCore": "1.0.0-*",
"XXX.Services": "1.0.0-*"

它们也包含在其他解决方案中,因此我无法将它们转换为核心。

wrapper-project.json看起来像这样:

{
  "version": "1.0.0-*",
  "frameworks": {
    "net46": {
      "bin": {
        "assembly": "../../../XXX.SystemCore/obj/{configuration}/XXX.SystemCore.dll",
        "pdb": "../../../XXX.SystemCore/obj/{configuration}/XXX.SystemCore.pdb"
      }
    }
  }
}

请问,如何从引用的项目中删除所有红色波浪线? : - )

1 个答案:

答案 0 :(得分:1)

将Web项目从ASP.NET 5 RC1升级到ASP.NET Core 1.0.0后,我在Visual Studio 2015中遇到了完全相同的问题。

在升级之后,Visual Studio以某种方式包含了经典(非核心)类库(.csproj)以及wrap文件夹中的包装器项目(.xproj)。在使用ASP.NET 5 RC1时,Visual Studio已创建了wrap文件夹。

在我的案例中有所帮助的步骤:

  1. 关闭解决方案并退出Visual Studio
  2. 从文件系统中的wrap文件夹中删除重复的xproj项目(或者如果可能,删除完整的wrap文件夹)。
  3. 在Visual Studio中打开解决方案并删除孤立(包装)项目。
  4. 重建。在某些情况下,我不得不删除并重新添加对经典(非核心)库的引用。
  5. <强>结论:

    不再需要wrap文件夹(&gt; RC2)来引用经典类库,但不知何故 - 如果仍然存在 - 似乎干扰了Visual Studio Intellisense