2014-11-19 9 views
20

VS2015ASP.NET vNext으로 놀고 있었고 동일한 솔루션에서 vNext 클래스 라이브러리 (kproj)에서 일반 클래스 라이브러리 (csproj)에 대한 참조를 추가하려고 시도했습니다. Visual Studio 2015에 다음과 같은 오류 메시지가 표시됩니다.kproj에서 csproj를 참조하는 방법

vNext 클래스 라이브러리의 csproj에 대한 참조를 추가 할 수 있습니까?

답변

23

참고 : kpm 명령은 dnu로 바뀌 었습니다.

Visual Studio 2015 Preview (작성 중)는 ASP.NET 5 stable release beta1과 함께 제공됩니다. 이 버전에서는 ASP.NET 5 프로젝트에서 csproj 프로젝트를 참조 할 수있는 방법이 없습니다.

그러나 ASP.NET 5의 개발 피드에서는 kpm wrap 명령이 ASP.NET 5 프로젝트의 csproj-projects를 참조하도록 지원되었습니다. aspnet/KRuntime 저장소의 github issue #827 및 문제를 해결하는 pull request #875을 참조하십시오.

을 있는지 확인 KRuntime is installed의 최신 버전합니다 (kvm list 명령으로이를 확인)을 (I 버전 1.0.0-beta2-10709으로이 테스트) : 여기

kpm wrap을 사용하는 방법을 예입니다.

ASP.NET 5 클래스 라이브러리 프로젝트를 만들려면 ClassLibrary1이라는 이름을 사용했습니다.

"일반"csproj 클래스 라이브러리를 만들고이 ClassLibrary2의 이름을 지정했습니다 (src 폴더에 넣어야합니다). ASP입니다으로 ClassLibrary1의 project.json (지금

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 

을 다음 solutiondirectory에서 명령 줄에서

는이 출력을 제공

kpm wrap .\src\ClassLibrary2

명령을 실행합니다. NET 5) 다음과 함께 ClassLibrary2에 대한 참조를 추가 할 수 있습니다.

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

참고 : kpm wrap이 cmd를 사용하여 제대로 실행되지 못했습니다. 실행하려면 powershell을 시작해야했습니다.

+5

남자 @AndersNS, 당신은 최첨단 있습니다. :) 우리는 여전히 그것으로 문제를 해결하고 또한 이것을 Visual Studio Add Reference 대화 상자에 통합하는 작업을하고 있습니다. – davidfowl

+0

PS> KPM 랩 System.Exception : TODO : 오류 : 미정 인수 "랩" Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.HandleUnexpectedArg (CommandLineApplication 공동 mmand 문자열 [] args를 INT32 인덱스 문자열 argTypeName) Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute (String [] args) Microsoft.Framework.PackageManager.Program.Main (String [] args) – RouR

+0

1.0.0-beta2-10709로 업그레이드하는 방법은 무엇입니까? PS> kvm upgrade 최신 버전 확인 KRE-CLR-x86.1.0.0-beta1이 이미 설치되어 있습니다. C : \ Users \ user \ .kre \ packages \ KRE-CLR-x86.1.0.0-beta1 \ bin을 추가하여 PATH 을 처리하십시오. C : \ Users \ user \ .kre \ packages \ KRE-CLR-x86 추가. 1.0.0-beta1 \ bin을 사용자 PATH로 변경 별칭 'default'를 'KRE-CLR-x86.1.0.0-beta1'로 업데이트 – RouR

3

내가 참조하고자하는 .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> 

이 프로젝트를 솔루션에 추가하고 MVC 6 프로젝트에서 참조 할 수 있습니다.당신이 그것을 사용

#if ASPNET50 
using class2 
#endif 

:

뭔가 같은 : 난 당신이 오류없이 통화를 할 경우 지침 (# 만약)를 사용할 필요가 발견이 답변 외에도

0

너는 똑같은 행동을해야한다. (비주얼 스튜디오 2015 RC)를 시작으로

#if ASPNET50 
    ViewBag.Message = class2.Class1.Greetings() 
#endif 
+0

업데이트 : http://stackoverflow.com/questions/27537496/vnext-cant-see-namespace-in-referenced-package을 확인하시기 바랍니다. project.json에서 프레임 워크 ASPNET50CORE를 제거하면 그 추한 지시어를 사용할 필요가 없습니다 :) –