2017-03-22 3 views
3

Ich benutze Visual Studio Code, weil es leichter als Visual Studio ist, aber gibt mir immer noch das Intellisense. Allerdings konnte ich Code nicht finden, um automatisch eine .csproj oder .sln zu erstellen, also habe ich die Dateien von Grund auf neu erstellt. Es gibt wenig Dokumentation darüber, also musste ich auf Beispiele aus anderen Dateien zurückgreifen. Es war alles gut und gut, aber in letzter Zeit habe ich einen Haken gefunden, wo das Kompilieren mit Msbuild mir nicht das gleiche Ergebnis liefert wie das Kompilieren mit csc.exe. Ich würde eine BadImageFormatException immer dann bekommen, wenn ich eine DLL laden würde und versuchen würde, eine ihrer Klassen zu benutzen. Meine Frage ist, gibt es eine Möglichkeit, vscode eine CSproj oder SLN-Datei generieren, wie ich neue Projekte erstellen? Und wenn nicht, gibt es eine Möglichkeit, die csproj-Dateien, die ich kompiliert habe, auf die gleiche Weise wie die Batch-Dateien zu erstellen?Hat vscode einen csproj Generator?

csproj Datei:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="Splicer.dll"> 
     <HintPath>Splicer.dll</HintPath> 
    </Reference> 
    <Reference Include="DirectShowLib-2005.dll"> 
     <HintPath>DirectShowLib-2005.dll</HintPath> 
    </Reference> 
    <Compile Include="src\*.cs" /> 
</ItemGroup> 
<Target Name="Build"> 
    <MakeDir Directories="$(OutputPath)" 
     Condition="!Exists('$(OutputPath)')" 
    /> 
    <Csc 
     Platform="x86" 
     NoWarn="" 
     Sources="@(Compile)" 
     OutputAssembly="$(OutputPath)$(AssemblyName).exe" 
    /> 
</Target> 
<PropertyGroup> 
    <AssemblyName>SplicerDemo</AssemblyName> 
    <OutputPath>bin\</OutputPath> 
</PropertyGroup> 
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 

Batch Compiler:

@echo off 
set "CSC=C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" 
set "Refs=Splicer.dll,DirectShowLib-2005.dll" 
set "Files=src\SplicerDemo\*.cs" 
set "Compile=%csc% /platform:x86 /r:%Refs% /out:SplicerDemo.exe /t:exe %Files$" 
cmd 

Datei zu kompilieren:

using Splicer.Renderer; 
using Splicer.Timeline; 

using System.Drawing; 

namespace SplicerDemo { 
    public class Start { 
     // Variables 
     public string outputFile; 

     public Start() { 
      outputFile= "Foo.avi"; 
     } 

     public static void Main() { 
      Start s= new Start(); 

      System.Console.WriteLine("Starting Build..."); 
      s.save(); 
      System.Console.WriteLine("Build Finished!"); 
     } 

     // --- Methods --- 

     public void save() { 
      // Variables 
      DefaultTimeline timeline= new DefaultTimeline(24); 
      IGroup _group= timeline.AddVideoGroup(32, 1024, 786); 
      ITrack vtrack= _group.AddTrack(); 
      ITrack atrack= timeline.AddAudioGroup().AddTrack(); 
      Bitmap img= new Bitmap("image3.jpg"); 

      vtrack.AddImage("image1.jpg", 0, 24); 
      vtrack.AddImage("image2.jpg", 0, 24); 
      vtrack.AddImage(img, 0, 100); 
      vtrack.AddImage("image1.jpg", 0, 128); 

      atrack.AddAudio("audio1.mp3", 0, vtrack.Duration); 

      using(AviFileRenderer renderer= new AviFileRenderer(timeline, outputFile)) { 
       renderer.Render(); 
      } 
     } 
    } 
} 

Antwort

2

Leider VSCode nicht Art und Weise hat zu erstellen/build Lösungen/Projekt s zielt auf vollständiges .Net Framework ab, unterstützt jedoch Projekte, die auf .Net Core abzielen. Sie können das Projektgerüstsystem Yeoman verwenden, um Projekte zu erstellen und zu erstellen, die auf .Net Core ausgerichtet sind.