static void Main(string[] args) { Environment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string debugDir = string.Format(@"..\..\..\{0}\bin\Debug", PROJECT_NAME); string releaseDir = string.Format(@"..\..\..\{0}\bin\Release", PROJECT_NAME); string moduleDir = string.Format(@"..\..\..\{0}\bin\{0}", PROJECT_NAME); PSD1.Create(PROJECT_NAME, debugDir); PSD1.Create(PROJECT_NAME, releaseDir); PSM1.Create(PROJECT_NAME, debugDir); PSM1.Create(PROJECT_NAME, releaseDir); if (Directory.Exists(releaseDir)) { using (Process proc = new Process()) { proc.StartInfo.FileName = "robocopy.exe"; proc.StartInfo.Arguments = string.Format( "\"{0}\" \"{1}\" /MIR /E /XJD /XJF", releaseDir, moduleDir); proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); proc.WaitForExit(); } } }
static void Main(string[] args) { // 引数1 ⇒ モジュールDLLファイルへのパス // 引数2 ⇒ .psd1ファイルへのパス // 引数3 ⇒ .psm1ファイルへのパス if (args.Length >= 3) { PSD1.Create(args[0], args[1]); PSM1.Create(args[0], args[2]); } }
// Releaseモジュール作成 private static void CreateReleaseModule(ProjectInfo info) { PSD1.Create(info); PSM1.Create(info); // Releaseフォルダーを公開用にコピー if (Directory.Exists(info.TargetDir)) { using (Process proc = new Process()) { proc.StartInfo.FileName = "robocopy.exe"; proc.StartInfo.Arguments = string.Format( "\"{0}\" \"{1}\" /COPY:DAT /MIR /E /XJD /XJF", info.TargetDir, info.ModuleDir); proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); proc.WaitForExit(); } } // Scriptフォルダーをコピー if (Directory.Exists(info.ScriptDir)) { foreach (string fileName in Directory.GetFiles(info.ScriptDir)) { File.Copy(fileName, Path.Combine(info.ModuleDir, Path.GetFileName(fileName)), true); } using (Process proc = new Process()) { proc.StartInfo.FileName = "robocopy.exe"; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; foreach (string dirName in Directory.GetDirectories(info.ScriptDir)) { proc.StartInfo.Arguments = string.Format( "\"{0}\" \"{1}\" /COPY:DAT /MIR /E /XJD /XJF", dirName, Path.Combine(info.ModuleDir, Path.GetFileName(dirName))); proc.Start(); proc.WaitForExit(); } } } // フォーマットファイルをコピー if (Directory.Exists(info.FormatDir)) { foreach (string fileName in Directory.GetFiles(info.FormatDir, "*.ps1xml")) { File.Copy(fileName, Path.Combine(info.ModuleDir, Path.GetFileName(fileName)), true); } using (Process proc = new Process()) { proc.StartInfo.FileName = "robocopy.exe"; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; foreach (string dirName in Directory.GetDirectories(info.FormatDir)) { proc.StartInfo.Arguments = string.Format( "\"{0}\" \"{1}\" /COPY:DAT /MIR /E /XJD /XJF", dirName, Path.Combine(info.ModuleDir, Path.GetFileName(dirName))); proc.Start(); proc.WaitForExit(); } } } // ヘルプファイルをコピー if (Directory.Exists(info.HelpDir)) { foreach (string fileName in Directory.GetFiles(info.HelpDir, "*.dll-Help.xml")) { File.Copy(fileName, Path.Combine(info.ModuleDir, Path.GetFileName(fileName)), true); } using (Process proc = new Process()) { proc.StartInfo.FileName = "robocopy.exe"; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; foreach (string dirName in Directory.GetDirectories(info.HelpDir)) { proc.StartInfo.Arguments = string.Format( "\"{0}\" \"{1}\" /COPY:DAT /MIR /E /XJD /XJF", dirName, Path.Combine(info.ModuleDir, Path.GetFileName(dirName))); proc.Start(); proc.WaitForExit(); } } } // 外部パッケージをコピー if (info.ExternalPackages != null) { foreach (ExternalPackage exPack in info.ExternalPackages) { exPack.CopyPackage(); } } // モジュールフォルダーをZipアーカイブ if (Directory.Exists(info.ModuleDir)) { if (File.Exists(info.ModuleZip)) { File.Delete(info.ModuleZip); } ZipFile.CreateFromDirectory(info.ModuleDir, info.ModuleZip, CompressionLevel.Optimal, false); } }
// Debugモジュール作成 private static void CreateDebugModule(ProjectInfo info) { PSD1.Create(info); PSM1.Create(info); }