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();
}
}
}
}