Hvordan referanse csproj fra kproj

stemmer
20

Jeg spilte rundt med VS2015og ASP.NET vNext, og ble sittende fast på å prøve å legge til en referanse fra vNext klassebibliotek (kproj) til en vanlig klassebibliotek (csproj) i samme løsning. Visual Studio 2015 viser følgende feilmelding:

Følgende prosjekter støttes ikke som referanser.

Er det mulig i det hele tatt å legge referanser til csproj fra vNext klassebiblioteker?

Publisert på 19/11/2014 klokken 15:01
kilden bruker
På andre språk...                            


4 svar

stemmer
23

Merk: kpm kommandoen har blitt erstattet av DNU.

Visual Studio 2015 Preview (som å skrive dette) kommer med ASP.NET fem stabile utgaven beta1. I denne versjonen er det ingen måte å referere til en csproj prosjekt fra en ASP.NET fem prosjekt.

Men på utvikling feed av ASP.NET fem kommandoen kpm wrapble introdusert for å støtte refererer csproj-prosjekter fra ASP.NET 5 prosjekter. Se github problemet # 827 i aspnet / KRuntime depot og trekke forespørsel # 875 som lukker problemet.

Her er et eksempel på hvordan du vil bruke kpm wrap:

Pass på at den nyeste versjonen av KRuntime er installert (sjekk dette med kvm listkommandoen) (Jeg testet dette med versjon 1.0.0-beta2-10709).

Lag en ASP.NET fem klassebibliotek prosjektet, jeg brukte navnet ClassLibrary1.

Lag en "normal" csproj klassebibliotek, jeg heter denne ClassLibrary2 (pass på at du setter dette i src-mappen).

Fra kommandolinja, fra solutiondirectory kjøre kommandoen

kpm wrap .\src\ClassLibrary2

Dette gir output:

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

Nå i project.json av ClassLibrary1 (som er ASP.NET 5) kan du legge til en referanse til ClassLibrary2 med dette:

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

Merk: kpm wrapikke kjøre skikkelig for meg med cmd, jeg trengte å lansere Powershell til å gjøre det kjøres.

Svarte 19/11/2014 kl. 21:04
kilden bruker

stemmer
11

Fra og med (Visual Studio 2015 RC) i kpm kommandoen har blitt erstattet av DNU

Den DNU kommandoen står for (NET Development Utility)

dnu wrap .\src\ClassLibrary2\ClassLibrary2.csproj

Nye ASP.NET funksjoner og feilrettinger i Visual Studio 2015 RC http://blogs.msdn.com/b/webdev/archive/2015/04/29/new-asp-net-features-and-fixes-in-visual- studio-2015-rc.aspx

Svarte 30/04/2015 kl. 16:37
kilden bruker

stemmer
3

Jeg har funnet det enklest å bare lage en tilsvarende .kproj for .csproj jeg vil referere til. Den .kproj krever ikke liste hver inkludert fil, så dette er ganske grei.

Du kan opprette YourProject.kproj som en tekstfil med innholdet under, og bare erstatte [REPLACE_WITH_UNIQUE_GUID] og [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>

Du kan deretter legge dette prosjektet til løsning og referere til den fra MVC 6 prosjekt.

Svarte 19/12/2014 kl. 03:55
kilden bruker

stemmer
0

I tillegg til dette svaret fant jeg ut at du trenger å bruke den hvis direktivet (#if) for å ringe uten feil:

Noe som:

#if ASPNET50 
 using class2
#endif

Når du bruker den i en samtale må du gjøre det samme.

#if ASPNET50
   ViewBag.Message = class2.Class1.Greetings()
#endif
Svarte 06/02/2015 kl. 15:25
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more