Intestineの日記スマートフォン用の表示で見るIntestineの日記この広告は、90日以上更新していないブログに表示しています。v0.24.0がリリースされました!公式ブログ記事を簡単に邦訳しましたので、以下に記載します。このリリースには破壊的変更は含まれておらず、いくつかの改善、バグ修正および新機能が含まれています。特筆すべき新機能は、Cakeスクリプトランナーに組み込まれたmoduleのbootstrappingです。これは、既に#toolや#addinプリプロセッサーディレクティブで可能なように、ビルドスクリプトに#moduleでライブラリーを指定することで、対象のmoduleをNuGetからダウンロードおよびインストールすることができます。nuget:?package=Cake.UrlLoadDirective.Module&version=1.0.2moduleはCakeの内部構造を変更・拡張することができるため、このbootstrappingはCakeスクリプト実行の前に実施する必要があることには注意が必要です。これは、通常のビルドスクリプトを実行する前に、引数として--bootstrapを渡してCakeプロセスを開始することで解決できます。7.2がサポートされるようになりました。Cakeのcontributorおよびユーザーの方々に感謝します。Steen本リリースの詳細は以下の通りです。本リリースで、私たちは33のissuesをcloseしました。C#2017/11/8にやっとCakeでIntellisenseが効くようになりました!公式ブログ記事を簡単に邦訳しましたので、以下に記載します。CodeでCakeファイルを編集中にIntellisenseが効くよう開発をおこなってきました。Codeのv1.13.0がリリースされたことをアナウンスすることができ、大変嬉しく思います。これに加え、私たちはbakeryという新しいツールをリリースしました。これはスクリプト解析/コード生成ツールエンジンであり、CakeのIntellisenseを可能にしています。bakeryのより詳細な情報や、バックグラウンドで何が起こっているのかについては、後日ブログで紹介します。Codeは既にインストール済みであると仮定します)。Codeを起動し、Cakeファイルの存在するフォルダへ移動します。Codeのv1.13.0がインストールされていることを確認します。Cakeのv0.10.1がインストールされていることを確認します。Cakeがtoolsフォルダにインストールされていることを確認します。addinが2回インストールされることを避けるため、v0.22.0以降を推奨します。簡単な方法は、.\build.ps1を実行することです。Bakeryがtoolsフォルダにインストールされていることを確認します。supportコマンドを実行することです。コマンドパレットを開いて「cake」と入力し、当該オプションを選択してください。Code上で当該フォルダを閉じ、再び開く必要があります。上記手順を実行しましたが、Intellisenseが有効になりません。Codeは、全ての*.slnファイルを検知し、omnisharp起動時にそのディレクトリを対象とします。selectorでCakeプロジェクトを選択する必要があります。Cakeプロジェクトを選択しましたが、Intellisenseが有効になりません。Logにエラーや警告が表示されていないかどうか確認してください。Aborting.上記のログは、Cake.Bakeryがtoolsフォルダにインストールされていないことを示しています。それに対して、以下のログは大抵の場合、Cakeがtoolsフォルダにインストールされていないことを示しています(よりよいエラーメッセージに向けて修正中です)。エラーメッセージは表示されていませんが、それでもIntellisenseが有効になりません。Logを表示し、Cakeに関係する箇所を探してください。適切にセットアップされていれば、少なくとも以下のようなログが表示されているはずです。files.表示されていない場合、C#拡張機能v1.13.0のインストール時に問題が発生した可能性があります。拡張機能を一度アンインストールし、その後再度インストールしてみてください。その後、Windowsの場合は%userprofile%\.vscode\extensions\ms-vscode.csharp-1.13.0\.omnisharp\、LinuxないしmacOSの場合は~/.vscode/extensions/ms-vscode.csharp-1.13.0/.omnisharp/を開き、OmniSharp.Cake.dllが存在することを確認してください。Intellisenseが有効になりましたが、その後追加したファイルが表示されません。これはomnisharpの既知の問題であり、*.csxでも同様です。omnisharpチームとともに今後のリリースで改善されるよう取り組んでいます。Cake.CoreCLRがtoolsフォルダにインストールされていればそれで充分でしょうか。いいえ、現時点ではCake.CoreCLRではIntellisenseが有効になりません。上記全てを試しましたが、まだIntellisenseが有効になりません。Github上でbakeryリポジトリにissueを立てるか、Gitterで私たちにコンタクトをとってみてください。beta5がリリースされたので、該当箇所を更新しました。最近よく使っているCake。v1.13.0からサポートされる予定ですが、現在beta5で動作確認できます。以下、簡単な検証方法です(くれぐれも自己責任で!)。CodeのC#拡張を既にインストールしている場合はアンインストール。ここからcsharp-1.13.0-beta5.vsixをダウンロード。ダウンロードしたVSIXをインストール。Extensionをインストールしていない場合はインストール。support/toolsディレクトリにCake.Bakeryがダウンロードされます。Debuggerがインストールされるのを確認。projectsを選択。こんな感じでIntelliSenseが効くようになっているはず!F12も使えます。(2)去年、Cakeビルド時のエラーについて触れました。ビルド対象のプロジェクトのパスにマルチバイト文字が含まれているとエラーになります。0.15.2まではうまくいってたんだけど、0.16.0からエラーになるみたい。その後ソースを確認してみたところ、どうもTool(NuGet)を.cakeファイル内で読み込もうとすると、Globbingの際に一文字ずつこんな条件を満たすかどうかチェックしてるっぽい。RegexOptions.Compiled).IsMatch(character.ToString())パスに使えない文字だけをホワイトリスト方式で検出するようにPR送ってもいいけど、対策見つけたんでちょっと保留。nuget:?package=NUnit.ConsoleRunner&version=3.4.0と書いてNuGetパッケージを読み込むのではなく、toolsディレクトリ内にpackages.configを置いてこんな感じに書いておく。/></packages>そうすると、bootstrapperを走らせた時にNuGetパッケージも復元してくれるので、パスにマルチバイト文字が含まれていてもビルド時にエラーにはならない(参考)。マルチバイト文字なんか使わないのが一番なんだけど、リポジトリの都合上仕方がない場面もあるかと思います。そんな時は、bootstrapperでNuGet復元するようにしましょう。Coreに対するODP.NETのサポートについてtweetしていました。directionの主要な箇所を簡単に意訳してみました。Driverを提供します。Linuxの予定です。Driverは他のOSに対するサポートを追加するかもしれません。他のLinuxディストリビューションに対してもサポートを継続して検討し、将来的には対象のリストに追加する予定です。2.0よりも前のバージョンに対してODP.NETを提供する予定はありません。Coreのサポートが可能になります。Coreに対するサポートは想定していません。将来的にはこれらのフレームワークに対するサポートを提供する予定です。Driverの提供は予定していません。2.0のリリースが延びてるから、それにつられてOracleのproviderもずるずると...って感じですね。オープンソースにする予定はないって言ってるし。Coreに対するproviderの開発に時間がかかるからリリースずらすっていうのはわかるけど。-Cakeって何?Cakeを一言で言うと、「C#で書ける.NETのためのビルド自動化ツール」です。NuGetリポジトリにPublish...みたいな一連の処理を全てC#で記述可能です。Coreに移行しました。Foundationに参加を表明しました。Cake現在、GitHub上で精力的に開発・管理されています。issueやPullRequest投げるよりも、まずgitterで質問してみるのがオススメ。Xのいずれにおいても動作します。AppVeyor、Jenkins、VSTS、TravisおよびBamboo等のCIツールにも対応済です。ビルドスクリプトをC#で書ける皆さんは一連のビルド処理どうやってます?powershellやバッチファイルの秘伝のタレ...Fakeも有名ですが、F#なので敬遠してるって方も多いんじゃないかなあ。CakeはFakeにかなり影響を受けていて、Taskベースのビルド処理を全てC#で記述できます。実際のスクリプトはこんな感じ。ふだんC#で開発している人ならば、そんなに違和感なくスラスラと読めるはず。拡張可能プラットフォーム依存の処理を書きたい場合はAddinを開発することで拡張することができます(これもC#で書ける!)。Cakeスクリプトは基本的にC#でできることなら何でも書けるので、スクリプトごとにメソッドを書いてもいいですが、複数のアプリで使いまわしたい場合やCakeにContributeしたい場合はAddinを書くのがオススメ。現在公開されているAddinは、AzureやAWS、Xamarin、Dockerなど80種以上。Foundationに参加したあたりに試しに使ってみたら結構すんなり適用できたので、最近はもっぱらCakeで遊んでます。有名どころだとNUnitなんかでも採用されてたりするし、Communityの雰囲気もいいんでしばらくは期待できそう。Studio2017がRTMになってからですね。token最近C#/ASP.NETアプリのビルドにCakeを使うことが多くなったのですが、久しぶりにはまってしまったのでメモ。ビルド対象のプロジェクトのパスにマルチバイト文字が含まれているとエラーになります。0.15.2まではうまくいってたんだけど、0.16.0からエラーになるみたい。exampleVerbosity=Diagnosticでビルドしてみると、こんなエラーを吐きます。Commit履歴見てみると、ちょくちょくパスに使える文字を追加してる...ホワイトリストじゃなくて禁止文字だけ定義したブラックリスト方式でいいんじゃない?gitterで聞いてみたところ、gep13に「issueあげてくれますか?」って言われたんで書いてみた→#1422まあこの手のマルチバイト問題はよくあることですよね。Cakeのソースは詳しく読んでないんで、年越しちゃうかな。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。