Visual Studioよりも軽量ですが、まだ私にインテリセンスがあるので、Visual Studio Codeを使用しています。しかし、私はコードが.csprojまたは.slnを自動的に構築する方法を見つけることができませんでした。そのため、ファイルをゼロから作成しています。そこにはほとんどドキュメントがありませんので、私は他のファイルからの例を外さなければなりませんでした。大丈夫ですが、最近はmsbuildを使ってコンパイルしてもcsc.exeでコンパイルしたのと同じ結果にはなりません。私はBadImageFormatExceptionを得るでしょう、私はDLLにロードし、そのクラスの1つを試してみてください。私の質問は、新しいプロジェクトを作成するときに、vscodeにcsprojまたはslnファイルを生成させる方法があるかどうかです。もしそうでなければ、バッチファイルと同じようにコンパイルしたcsprojファイルを作る必要がありますか?vscodeにはcsprojジェネレータがありますか?
csprojファイル:
<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" />
バッチコンパイラ:
@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
コンパイルするファイル:
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();
}
}
}
}