Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从kproj中引用csproj_C#_Asp.net Core_Visual Studio 2015 - Fatal编程技术网

C# 如何从kproj中引用csproj

C# 如何从kproj中引用csproj,c#,asp.net-core,visual-studio-2015,C#,Asp.net Core,Visual Studio 2015,我在玩VS2015和ASP.NET vNext,在同一个解决方案中,我一直在尝试将vNext类库(kproj)的引用添加到常规类库(csproj)中。Visual Studio 2015显示以下错误消息: “不支持以下项目作为参考” 是否可以从vNext类库添加对csproj的引用?注意:kpm命令已被dnu替换 Visual Studio 2015预览版(在撰写本文时)附带ASP.NET 5稳定版beta1。在此版本中,无法从ASP.NET 5项目中引用csproj项目 然而,在ASP.NET

我在玩
VS2015
ASP.NET vNext
,在同一个解决方案中,我一直在尝试将vNext类库(kproj)的引用添加到常规类库(csproj)中。Visual Studio 2015显示以下错误消息:

“不支持以下项目作为参考”


是否可以从vNext类库添加对csproj的引用?

注意:kpm命令已被dnu替换

Visual Studio 2015预览版(在撰写本文时)附带ASP.NET 5稳定版beta1。在此版本中,无法从ASP.NET 5项目中引用csproj项目

然而,在ASP.NET 5的开发提要上,引入了命令
kpm wrap
,以支持从ASP.NET 5项目中引用csproj项目。请参阅aspnet/KRuntime存储库中的github,它关闭了问题

下面是一个如何使用
kpm wrap
的示例:

确保最新版本的(使用
kvm list
命令检查)(我使用版本
1.0.0-beta2-10709
测试了此)

创建一个ASP.NET 5类库项目,我使用了ClassLibrary1这个名称

创建一个“普通”csproj类库,我将其命名为ClassLibrary2(请确保将其放在src文件夹中)

从命令行,从解决方案目录运行命令

kpm包装。\src\ClassLibrary2

这将提供以下输出:

Wrapping project 'ClassLibrary2' for '.NETFramework,Version=v4.5'
 Source C:\Users\andersns\Source\ClassLibrary1\src\ClassLibrary2\ClassLibrary2.csproj
   Target C:\Users\andersns\Source\ClassLibrary1\wrap\ClassLibrary2\project.json
   Adding bin paths for '.NETFramework,Version=v4.5'
     Assembly: ../../src/ClassLibrary2/obj/debug/ClassLibrary2.dll
     Pdb: ../../src/ClassLibrary2/obj/debug/ClassLibrary2.pdb
现在,在ClassLibrary1(即ASP.NET 5)的project.json中,您可以使用以下内容添加对ClassLibrary2的引用:

...
"dependencies": {
    "ClassLibrary2": ""
},
...

注意:
kpm-wrap
未使用cmd为我正确运行,我需要启动powershell使其运行

我发现简单地为我要引用的.csproj创建一个对应的.kproj是最容易的。kproj不需要列出每个包含的文件,因此这相当简单

您可以将YourProject.kproj创建为包含以下内容的文本文件,并且只替换[replace_with_UNIQUE_GUID]和[ROOT_NAMESPACE]

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.Props" Condition="'$(VSToolsPath)' != ''" />
  <PropertyGroup Label="Globals">
    <ProjectGuid>[REPLACE_WITH_UNIQUE_GUID]</ProjectGuid>
    <RootNamespace>[ROOT_NAMESPACE]</RootNamespace>
    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
    <OutputPath Condition="'$(OutputPath)'=='' ">..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
  </PropertyGroup>
  <PropertyGroup>
    <SchemaVersion>2.0</SchemaVersion>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <ProduceOutputsOnBuild>True</ProduceOutputsOnBuild>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>

14
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
[用\u唯一\u GUID替换\u]
[根目录名称空间]
..\artifacts\obj\$(MSBuildProjectName)
..\artifacts\bin\$(MSBuildProjectName)\
2
真的

然后,您可以将此项目添加到解决方案中,并从您的MVC 6项目中引用它。

除此之外,我发现您需要使用if指令(#if)进行调用,而不会出现错误:

比如:

#if ASPNET50 
 using class2
#endif
当你在通话中使用它时,你也需要这样做

#if ASPNET50
   ViewBag.Message = class2.Class1.Greetings()
#endif
从(Visual Studio 2015 RC)开始,kpm命令已被dnu

dnu命令代表(.NET开发实用程序)

Visual Studio 2015 RC中新的ASP.NET功能和修复程序

Man@AndersNS,你是最前沿的:)。我们仍在修复它的问题,并正在将其集成到visual studio Add Reference dialog.PS>kpm wrap系统中。异常:TODO:错误:无法识别的参数“wrap”Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.HandleUnexpectedArg(CommandLineApplication命令,字符串[]args,Int32索引,字符串argTypeName)Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute(字符串[]args)Microsoft.Framework.PackageManager.Program.Main(字符串[]args)如何升级到1.0.0-beta2-10709?PS>kvm升级确定已安装最新版本KRE-CLR-x86.1.0.0-beta1。将C:\Users\user\.kre\packages\kre-CLR-x86.1.0.0-beta1\bin添加到进程路径将C:\Users\user\.kre\packages\kre-CLR-x86.1.0.0-beta1\bin添加到用户路径将别名“default”更新为“kre-CLR-x86.1.0.0-beta1”,工具最终将支持相反的场景,让旧类库引用ASP.NET 5库,例如,除了aspnet50x框架之外,他们还瞄准net45?我知道这可以更手动地完成,但如果可能的话,能够在混合解决方案中让所有的东西都发挥作用,那就太好了。@Adam不确定这将如何工作,因为net45目标框架是如何工作的,而aspnet5是如何工作的。也许在将来?用这个有趣的问题开始另一个问题更新:请检查。如果在project.json中删除framework ASPNET50CORE,则无需使用该丑陋指令:)
dnu wrap .\src\ClassLibrary2\ClassLibrary2.csproj