私はMonoserveとNginxをUbuntuで完全に実行していますが、MSBuildを使用してWindowsボックスでローカルにWebサイトを公開してから、ファイルをコピーする必要があります。
できれば、XBuildを使用する代わりにこれを行うLinux CIサーバーが欲しいのですが、プロジェクトを.dllにビルドするためにしか取得できません。js、css、viewsなどを使用して公開およびデプロイするにはどうすればよいですか?
通常、「dllのビルド」の部分が最も難しい部分です。あなたがそれを解決したなら、あなたはそこに80%います。残りの半分はコンテンツの公開です。最も基本的な側面では、ファイルの一部をソースディレクトリからWebサイトフォルダにコピーしています。MSDeployは、それに対するMicrosoftの答えであり、複雑すぎます。これを行うNAntタスクを作成しましたが、特定のシナリオには適用されません。ただし、一般的な方法論では次のことができます。
slnファイルをクロールしてWebプロジェクトを探します。Webプロジェクトを作るものは何ですか?技術的には、csprojファイルのGUIDまたはslnファイルのプロジェクトタイプID。私はそれをだまして「ターゲットフォルダにweb.configファイルが含まれている」と定義しました。ソリューションにWebサイトプロジェクトが1つしかない場合は、この手順をスキップして、.csprojファイルをハードコーディングするだけです。
csprojファイルをクロールしてノードを探します<Content Include="some\file.ext" />
。XPathはこれを行うことができ、LinqtoXMLもそれを行うことができます。これにより、すべての.csファイルを慎重に残しながら、すべての.aspx、.cshtml、.js、.css、.png、.configなどが提供されます。真のオリジンファイルの場所を取得するには、.csprojファイルへのパスのプレフィックスを付ける必要があります。また、デスティネーションの場所でフォルダー構造を保持する必要があります。しかし、これはファイルリストを収集することと比較すると些細なことです。
ファイルリストができたので、それをループして、ソースフォルダーから宛先フォルダーにコピーします。(最初に宛先フォルダーを空にするか、後で以前のデプロイメントから余分なファイルを削除することをお勧めします。前者の方が簡単だと思います。)csprojファイルクロールで得られなかったのはbinフォルダーのコンテンツだけでしたが、それは簡単です。コピーbinフォルダーのすべての内容。:D(.pdbファイルをコピーするかどうかについては健全な議論がありますが、私はそう言います。)
上記の3つの手順を実行するスクリプトを作成してから、XBuildタスクから呼び出すか、CIプロセスからXBuildとこのスクリプトの両方を呼び出します。プーフ。デプロイターゲットがあります。ハッピーコーディング!
できれば、XBuildを使用する代わりにこれを実行するLinux CIサーバーが必要 です。良いニュースは、この記事で見つけた回避策でこれを実行できることです。上記の記事からの抜粋と回避策のリンクは次のとおりです。
ビルドサーバーには、Microsoft MVC(任意のバージョン)がインストールされていません。ただし、これは非常に簡単に回避できます。MicrosoftMVCはNuGet(http://nuget.org/packages/Microsoft.AspNet.Mvc )で入手できます。古いバージョンをインストールする必要がある場合は、下部にある古いバージョンをクリックしてください。このページにアクセスすると、そのバージョンのフレームワークをインストールする方法についての説明が表示されます。
これがあなたにとって簡単になることを願っています!
@DHarunのアイデアはうまく機能します!@Dharunのアイデアに基づいて小さなスクリプトを書いたところですが、他の人に役立つことを願っています。 https://github.com/z-ji/MonoWebPublisher