投稿

新しいdotnetコマンドで自己展開型(self contained)なバイナリを生成するには

VS.NET 2017系になって、Dotnet coreがproject.jsonからcsprojになりました。 以前は、project.jsonで自己展開型(.exeにビルドするやつ)にビルドするには、 project.jsonに、以下のようにruntimesセクションを追加して "runtimes": {   "win10-x64": {}   "osx.10.10-x64: {} } dotnet build -r win10-x64 などとコマンドラインで叩くと-r(runtimes)オプションで指定した環境向けに単独で実行できるバイナリが生成されます。 VS.NET 2017では、project.jsonが廃止されて*.csprojになってしまったので、自己展開型のバイナリ生成が上記のやり方ではできなくなってしまいました。 VS.NET 2017のプロジェクトのプロパティからも設定できなかったが、csprojを直接編集することでできる模様。 <PropertyGroup>   <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>   <RuntimeIdentifiers>osx.10.10-x64</RuntimeIdentifiers> </PropertyGroup> 上記のようにした上で、 dotnet build -r win10-x64 dotnet build -r osx.10.10-x64 とコマンドラインで叩くと、指定した環境向けの実行バイナリが生成される。 参考: https://docs.microsoft.com/ja-jp/dotnet/articles/core/deploying/ どっちにしてもVS.NET上で指定はできないみたい。 →とわいえ、VS.NET 2017からDotnet Coreサポートは大分良くなったよ!!

マルチモニタをやめてみた

クラムシェルをやってみたくて一時的にマルチモニタをやめてみたら意外に作業が捗る事がわかった 理由を考えたところ作業スペースが有効に使え、マルチモニタのときは狭くて使って無かった紙とペンを使うようになったことと、何より集中力が上がった気がする。 目の前に...

Anguler2@Windows with Webpackでエラーが発生する件について

Angular2をWindows環境で実行しようと、 http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/ からひっぱてきたテンプレートを使って動かそうとした際、 node_module/to-string-loader/src/to-string.jsの16行目でjavascriptのヒアドキュメントがILLEGALなsyntaxというエラーが発生してえらく難儀したのでメモしておく。 結論から言うと、node.jsのバージョンが 0.10.xxx で古かったらしく最新バージョンにアップしたら問題なく動作した。 最新版は ここ を参考に引っ張ってきた。※既にnode.jsにパスが通っている環境の場合、既存のパスの方が優先されたのでパスの調整が必要でした。 また、TypeScriptのバージョンもアップ(1.5.4→2.14)した。 普段はVisual Studio.Codeを使っているが、たまにVisual Studio.NETを使うのも良い気がした。 追記: ここ に既出ですね。→node.js 4.X以上じゃないとダメみたいですね。

typescript環境構築の自分用メモ

typescript環境構築の自分用メモ yoは入れておく。 yo aspnetで足場は作れるようにしておく。 typings install dt~jquery --save --global とかやると typings/globals/jquery/** に型定義ファイルができる。 typings/index.d.tsをrefernce指定すれば補完が効く。 gulpを使うためにgulpfile.jsを作っておく。 gulpfile.jsのなかみは以下のような感じ。 var gulp = require('gulp'); //var del = require('del'); var paths = { unify: [ 'app.js', 'app.js.map' ], scripts: [ 'TypeScript/**/*.tsx', 'TypeScript/**/*.ts', 'TypeScript/**/*.map' ] } gulp.task('default', function () { //del(['wwwroot/TypeScript/**/*']); //del(['wwwroot/js/*']); gulp.src(paths.unify) .pipe(gulp.dest('wwwroot/js')); gulp.src(paths.scripts) .pipe(gulp.dest('wwwroot/js/TypeScript')); }); delはあってもなくてもよい。 ワークスペースのフォルダ構成は以下の感じ。 /TypeScript    →ここに*.tsを入れとく /Views    →cshtmlはこの下に置かれる。 /Controllers    →コントローラのコードはここに置かれる。 /wwwroot    /js       ここにコンパイルされたjsが配置される...

GOLANG@VS.CODE自分用メモ

GOPATHの設定をどうするか的な話。 プロジェクトごとにルートパスが違うのでシステムに単一のGOPATHだと いやだなぁと思っていて、かと言って相対パスでローカルパッケージを 指定してもvs.codeでローカルパッケージだとインテリセンスが効かない のも嫌だなぁというのをなんとか解決する話。 GOROOTを.bash_profileに設定する。  export GOROOT=/usr/local/opt/go/libexec .bash_profileにcode .とうつと起動するように仕込みを入れる。 code () {     if [[ $# = 0 ]]     then GOPATH=$(pwd)         open -a "Visual Studio Code"     else GOPATH=$(pwd)         [[ $1 = /* ]] && F="$1" || F="$PWD/${1#./}"         open -n -a "Visual Studio Code" --args "$F"     fi } exportしないでGOPATHをワークスペースに設定しておく。 こうすると、vs.codeで自前パッケージのインテリセンスが有効になる。 起動後に.vscode下にtasks.jsonを作る。 以下のような感じ {     "version": "0.1.0",     "command": "go",     "showOutput": "always",     "options": {         "env": {             "GOPATH": "${workspaceRoot}"   ...

Xamarin.Formsでカスタムコントロールを作るメモ

Xamarin.Formsでのカスタムコントロール構築 共通プロジェクト側で、BoxViewを継承したクラスを作る BoxViewを継承したクラスをメインのXamlページではっつける プラットフォーム毎のプロジェクトでBoxViewの中を描画するためのRendererクラスを作る // 例) public class CustomControlClass : BoxView { } RendererクラスのiOS/Android共通の要件は以下の通り。 assembly:ExportRenderer属性を設定する。 例)[assembly:ExportRenderer(typeof(ShapeView), typeof(ShapeRenderer))] RendererクラスのiOS固有の要件は以下の通り。 iOSの場合、VisualElementRenderer<>から継承する。 (Xamarin.Forms.Plarform.iOS名前空間で定義) VisualElementRendererの型引数はターゲットとするViewBoxを継承したクラス。 Rendererクラスでは、Drawメソッド内にコントロール固有の描画コードを記述する。 //例) [assembly:ExportRenderer( typeof (CustomControlClass), typeof (CustomControlRenderer))] namespace Hoge.iOS { public class CustomControlRenderer : VisualElementRenderer < CustomControlRenderer > { public override void Draw(System.Drawing.RectangleF rect) { // specify draw code here. } } } Android固有のRendererクラスの要件 Androidの場合、ViewRenderer<>から継承する。(Xamarin.Forms.Plarform.Android名前空間で定...

macのdylibのロード方法

macでdylibのプロジェクト(ここでは、libXXXX.dylib)とそれを使用するアプリ(ここではXXXXDriver)のプロジェクトがあって、xcodeからは実行できるけど、ターミナルから叩くと dyld: Library not loaded: /usr/local/lib/libXXXX.dylib   Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/XXXXi_dylib-cagqvakmzwqigmgxxrwzutupseja/Build/Products/Release/./XXXXDriver   Reason: image not found Trace/BPT trap: 5 というようなメッセージが出力されて起動できない問題に対処したのでメモ 解決方法1: /usr/local/libに ロードしようとする libXXXX.dylibをコピーする → 環境が汚れるし、なんか負けた気がするのでNG 解決方法2:起動用のshファイルを作ってそれを叩く方法 test.shファイルを作ってそれをターミナルから叩いて実行させるようにする話。 #!/bin/sh # dylibのロードするパスを通す export DYLD_LIBRARY_PATH=/Users/username/Library/Developer/Xcode/DerivedData/XXXXi_dylib-cagqvakmzwqigmgxxrwzutupseja/Build/Products/Release:$DYLD_LIBRARY_PATH # 実行 ./XXXXDriver このファイルをtest.shとして保存して、chmod +x test.sh とやって実行できるようにする。 これでターミナル上で./test.shと叩けば、きちんと実行できるようになる!!