分享一个用csc.exe编译WPF的批处理 及 Uri的相对绝对表示例子

用csc.exe编译WPF的批处理

@echo off if "%1"=="" goto help csc /t:winexe /r:system.dll,system.xaml.dll,"%WINDIR%\Microsoft.NET\Framework\v4.0.30319\WPF\windowsbase.dll","%WINDIR%\Microsoft.NET\Framework\v4.0.30319\WPF\presentationcore.dll","%WINDIR%\Microsoft.NET\Framework\v4.0.30319\WPF\presentationframework.dll" %1 %2 %3 %4 %5 %6 %7 %8 %9 if errorlevel 1 pause goto exit :help echo 格式:%0 输入文件 [其他参数] echo 例子:%0 test.cs /unsafe :exit

我把这个批处理放在D:\Quick文件夹里(注意保存为ANSI编码格式)。设置当前用户的环境变量Path=%windir%\Microsoft.NET\Framework\v4.0.30319;D:\Quick

如果你使用的是.NET Framework 3.5或者3.0的,请在环境变量和批处理中自行更换正确路径。

然后我可以在Scite编辑器或者CMD中编译WPF例子。详细见图:

分享一个用csc.exe编译WPF的批处理 及 Uri的相对绝对表示例子

Uri的相对绝对

测试代码:

using System; using System.Reflection; public class Program { public static void Main() { Console.WriteLine(new string('-',40)); Uri uri; Uri baseUri=new Uri(@"D:\"); //基地址 Console.WriteLine(">baseUri={0}",baseUri); Console.WriteLine(); if(Uri.TryCreate(baseUri,@"Quick\cscwpf.bat",out uri)) //合并新地址 { Console.WriteLine(">uri={0}",uri); Console.WriteLine("AbsoluteUri={0}\nIsFile={1}\nIsLoopback={2}\nIsUnc={3}\nLocalPath={4}", uri.AbsoluteUri,uri.IsFile,uri.IsLoopback,uri.IsUnc,uri.LocalPath); Console.WriteLine("AbsolutePath={0}\nOriginalString={1}\nScheme={2}\nPathAndQuery={3}\nPort={4}\nUserInfo={5}\nQuery={6}", uri.AbsolutePath,uri.OriginalString,uri.Scheme,uri.PathAndQuery,uri.Port,uri.UserInfo,uri.Query); Console.WriteLine(); } var relativeUri=baseUri.MakeRelativeUri(uri); //生成相对地址 Console.WriteLine(">relativeUri={0}",relativeUri); Console.WriteLine("IsAbsoluteUri={0}", relativeUri.IsAbsoluteUri); var uriBuilder=new UriBuilder(uri); //UriBuilder Console.WriteLine(); Console.WriteLine(">uriBuilder={0}",uriBuilder); var uriBuilderType=uriBuilder.GetType(); PropertyInfo[] properties=uriBuilderType.GetProperties(); foreach(PropertyInfo pi in properties) { Console.WriteLine("{0}={1}",pi.Name,pi.GetValue(uriBuilder,null)); } Console.WriteLine(new string('-',40)); } }

测试结果:

---------------------------------------- >baseUri=file:///D:/ >uri=file:///D:/Quick/cscwpf.bat AbsoluteUri=file:///D:/Quick/cscwpf.bat IsFile=True IsLoopback=True IsUnc=False LocalPath=D:\Quick\cscwpf.bat AbsolutePath=D:/Quick/cscwpf.bat OriginalString=D:/Quick/cscwpf.bat Scheme=file PathAndQuery=D:/Quick/cscwpf.bat Port=-1 UserInfo= Query= >relativeUri=Quick/cscwpf.bat IsAbsoluteUri=False >uriBuilder=file://D:/Quick/cscwpf.bat Fragment= Host= Password= Path=D:/Quick/cscwpf.bat Port=-1 Query= Scheme=file Uri=file:///D:/Quick/cscwpf.bat UserName= ----------------------------------------