CustomScript

ページ

ラベル VisualStudio の投稿を表示しています。 すべての投稿を表示
ラベル VisualStudio の投稿を表示しています。 すべての投稿を表示

2016年4月18日月曜日

VisualStudio 2015 Update2 のメモ

  • VisualStudio2015
  • WPF
  • C#
久々に技術ネタを投稿。

VisualStudio 2015 Update2 がきていました。
詳細はこちら。

Visual Studio 2015 Update 2
https://www.visualstudio.com/news/vs2015-update2-vs

Visual Studio 2015 Update 2 リリース
https://blogs.msdn.microsoft.com/visualstudio_jpn/2016/03/31/visual-studio-2015-update-2-rtm/

C/C++パフォーマンスが改善されてたり、Git LFS対応とかいろいろありますが、その中で自分に関係しそうなWPFとC#に関連する変更点のみ挙げてみます。


C#インタプリタ


C#インタプリタを気軽に試せるようになりました。
「対話形式で実行(Ctrl+E,Ctrl+E)」 で C#インタラクティブウィンドウが開きます。
手前に開かないのでわかりにくいですが、ドキュメントのタブに[C# Interactive]が増えてると思います。
コンソールになっているので、以下のようにC#命令を直接入力実行できます。

> Console.WriteLine("Hello!")
Hello!

ソースコードのコードを選択してからCtrl+E,Ctrl+Eすると、そのコードをC#インタラクティブウィンドウ上で実行できるので、ちょっとしたチェックに使用できる、かな?

「#help」 で操作方法が表示されますが、それを見るとdllの読み込みやスクリプトの実行ができるようです。

・・といった感じですが、有用な活用方法が私には今のところなさげです。


コード修正機能がより便利になった -- Typo修正


コード上に現れる電球マークを押すとusing宣言を挿入したりインターフェイスの雛形を挿入してくれる便利な機能があるのですが、多少打ち間違えた場合でも正しいクラス名とかに修正してくれるようになりました。

例えば、
Straem
のようなtypoを
Stream
になおしてくれる、といった感じです。

試してみたのですが、修正が効かない場合があったり期待とは異なる修正を提案したりするので、過剰な期待はしないほうが良いでしょう。

ちなみに例で上げたようなtypoは Ctrl+t で前後の文字入れ替えるという機能を使って修正することができます。

コード修正機能がより便利になった -- null条件演算子へ変換、等


これもコード修正機能です。
if (action != null) action();
といったコードを
action?.Invoke();
のようなnull条件演算子を使用した修正を提案するようになりました。

他にも、awaitを使用してないasync関数からasyncを削除する修正を提案したりするようです。


C#アナライザのパフォーマンス向上


C# Analyzer および Visual Basic Analyzer の API が改良され、生成されたコードでアナライザーを実行するときのパフォーマンスと制御性が向上した、ようです。

使ってないのでよくわからないっす。


アプリ内のUIデバッグメニュー


WPFのプロジェクトをデバッグ実行すればすぐわかると思うのですが、アプリのタイトルバー直下にXAMLデバッグ用のUIメニューが表示されるようになりました。今までライブビジュアルツリーにあった機能ですが、それがより使いやすくなった感じでしょうか。


これを表示したくない場合は、[デバッグ(D)]>[オプション(O)] で「デバッグ>全般」の「アプリケーションでランタイムツールを表示」のチェックを外します。

あと、XAMLデバッグ関係ではライブプロパティエディタにアクセシビリティプロパティ(AutomationPeer)が表示されるようになったようです。うん、よくわからん。

これらのXAMLデバッグ機能については以下の動画(英語)を見るとなんとなくわかります。

Runtime Editing Tools for XAML
https://www.youtube.com/watch?v=Ama_giXPtvE



このムービーでは実行中にXAML編集していますが、これはUpdate2ではなく次期VisualStudioの新機能(現在プレビュー版)です

2015年12月24日木曜日

MSBuildでWPFプロジェクトをビルドする

  • VisualStudio 2015
  • C# 6.0

バッチファイルは以下の様になります。
set MSBUILD="C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
set SOLUTION="C:\Documents\Visual Studio 2015\Projects\MyProject\MyProject.sln"

%MSBUILD% %SOLUTION% /p:Configuration=Release /t:Clean,Build
MSBuild.exe のパスに気をつけてください。
Windowsにはいくつもの MSBuild.exe がインストールされていますが、 上記パスの MSBuild.exe を使用しないと C# 6.0 の新しい構文でエラーになります。

参考URL
http://stackoverflow.com/questions/32007871/how-to-upgrade-msbuild-to-c-sharp-6

2014年12月8日月曜日

UnityとVisualStudioの連携

  • Unity4.6
  • VS2013
久々にUnityを触ってみました。VisualStudioの拡張で Visual Studio 2013 Tools for Unity というものが無料で使えます。これを導入することで、MonoのエディタではなくVisualStudioでスクリプトデバッグできるようになります。C#を扱う環境としてVisualStudioは最適だと思うので、これはうれしいです。

Visual Studio 2013 Tools for Unity
https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2

使い方にちょっとした手順が必要なので、ドキュメントを軽く読んでおくとよいです(英語;)。コード補完、デバッガ以外にも便利機能があるようです。

Visual Studio Tools for Unity - Documentation
http://unityvs.com/documentation/
http://unityvs.com/documentation/configuration/ (使い方)

以前はUnityVSという製品名で有料だったんですが、Microsoftに買収されて無料になったようです。VisualStudioもComunityという高機能無料バージョンが出たし、良い時代になったものです。

2014年12月6日土曜日

WPF勉強(11) アプリ配布方法について WiX編

  • VS2013
  • WiX3.9
WiXでインストーラを作成してみました。

Windows Installer XML toolset(ウィックス)は、XML ドキュメントから Windows Installer (MSI) パッケージを作成するためのフリーソフトウェアのツールセットである。WiX はコマンドラインベースの環境をサポートしている。(by Wikipedia)

WiXについては下記ページを参照してください。

WiX Toolset (公式)
http://wixtoolset.org/
WiXチュートリアル(日本語訳)
http://wix.softark.net/

今回はVisualStudioでWiXを使ってみます。 そこそこの見栄えにするため、チュートリアルの2.4ぐらいまで進めていることを前提にします。

チュートリアルはコマンドラインですが、標準ではパスが通っていません。下記のようなバッチを作ってそこから作業すると良いでしょう。
@set Path=%Path%;C:\Program Files (x86)\WiX Toolset v3.9\bin
@start /b

WiXをインストールするとVisualStudioでWiXのプロジェクトが作れるようになります。
次のムービーを参考に最小のWiXプロジェクトを作ってみてください。



私は英語がわかりませんが、操作を見ていればなんとなくわかります。映像は偉大です。
チュートリアルとWiXの構造が違うように見えますが、<Fragment>で要素が外に置かれているだけです。新しい要素としては、<MajorUpgrade>はアップグレードの簡易設定用で、<MediaTemplate>は<Media>に替わるもの?です。

で、実際に自分のプロジェクトでやってみたときのWiXコードがこれです。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <Product Id="*" Name="テストアプリ" Language="1041" Codepage="932" Version="1.0.0.0" Manufacturer="テストアプリ製作所" UpgradeCode="YOURGUID-6dddd4f9-12ba-476a-92bb-92f4460670cf">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes"  />

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentGroupRef Id="ProgramMenuComponents" />
    </Feature>

    <UIRef Id="WixUI_Minimal" />
    
  </Product>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="テストアプリ" />
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="MyMenuFolder" Name="テストアプリ" />
      </Directory>
    </Directory>
 </Fragment>

  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Guid="*">
        <File Source="$(var.WpfApplication1.TargetPath)" KeyPath="yes">
          <Shortcut Id="ShortcutMyMenu" Directory="MyMenuFolder" Name="テストアプリ" WorkingDirectory="INSTALLDIR" Icon="MyIcon.exe" IconIndex="0" Advertise="yes"/>
        </File>
        <File Source="$(var.WpfApplication1.TargetPath).config" />
      </Component>
    </ComponentGroup>

    <ComponentGroup Id="ProgramMenuComponents" Directory="MyMenuFolder">
      <Component Guid="*">
        <RemoveFolder Id="MyMenuFolder" On="uninstall"/>
        <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type ="string" Value="" KeyPath="yes" />
      </Component>
    </ComponentGroup>

    <Icon Id="MyIcon.exe" SourceFile="$(var.WpfApplication1.TargetPath)" />
    
  </Fragment>

</Wix>

.exeと一緒に.exe.configもインストールするようにしています。WPFアプリの静的な設定ファイルみたいなもの?なので、セットにしておくと良いようです。

スタートメニューから起動できるようにショートカットを作るようにしています。

ちょっと豪華なUIにするためにWiXUIを使っています。チュートリアルではコマンドラインで "-ext WixUIExtension" オプションを追加していましたが、VisualStudioのプロジェクトでは参照(References)でWixUIExtension.dllを追加します。日本語設定も必要なので、プロジェクトのプロパティの[Build]の Cultures to build: に "ja-JP" を記述しています。


2014年12月5日金曜日

WPF勉強(10) アプリ配布方法について ClickOnce編

  • VS2013
調べてみるといろんな配布方法がありますが、まずはVisualStudio2013標準の配布方法 ClickOnce を試してみます。

この方法、試すだけならとても簡単。[ビルド]メニューから[(アプリ名)の発行]を選びます。そうすると発行ウィザードが立ち上がるので、それに答えていくだけです。とりあえず試すだけなので以下の設定でいきます。ほとんどデフォルトだと思います。
アプリケーションはどこに発行しますか?
publish\
ユーザーはアプリケーションをどのようにインストールするのですか?
CD-ROMまたはDVD-ROMから
アプリケーションの更新はどこで確認するのですか?
アプリケーションの更新を確認しない
最後に[完了]ボタンを押せば発行作業が開始され、プロジェクトフォルダに「publish」フォルダができます(自動で開きます)。このpublishフォルダ自体が配布セットになっていて、そのsetup.exeを実行するとインストールが行われます。発行元が確認できない警告が出ますが、自分で作ったものなので問題なし。インストールに成功するとアプリが立ち上がります。スタートメニューにも登録され、アンインストールはコントロールパネルから行うことができます。 ね、簡単でしょ? しかもこのアプリ、最近のアプリによくある自動更新機能がほぼ標準装備です。すごい。

…ですが、このClickOnce方式、ほとんど世の中で見かけません。

カスタムできる範囲が狭い
インストール場所を選んだりできません。コンポーネントを選んでインストールということもできません。 なので大規模な商用アプリには向かないように思えます。

証明書を用意する必要がある
ネットからの配信にするのが理想の形なのでしょうが、セキュリティが問題です。このため、ちゃんとした証明書を取得して添付してやらないといけません。このようなコストはちょっとしたアプリを一般公開したい場合には向きません。
試しに何も設定しないでネットからのインストール設定で発行、IEからインストールを試してみたところ、これでもかというくらいの警告が出ます。そんな状態では社内であろうと公開できません。

インストーラーが1ファイルではない
発行されたフォルダごと配布しようと考えた場合、zipにまとめますよね。解凍して中のsetup.exeを実行という手間を考えると、最初から1ファイルでインストーラーになっている従来型で良い気がします。もしくは単なるzipまとめ配布でも。

発想がAndroidやiOSアプリに近いので、従来の考え方だとなじまないのが普及しない原因でしょうか。証明書周りさえちゃんと用意できればそこそこ使えそうですけどね。


2014年11月28日金曜日

WPF勉強(6) GitとBitBucketとVisualStudio2013と

  • VS2013
 

WPFアプリを作っていてふとbinフォルダを見たら、よくわからない不要なファイルができていました。いつからなんだろう?何をしたから?こんな時にバージョン管理システムあればなー、ということで導入してみます。

バージョン管理システムは今最もメジャーであろうGitに挑戦してみます。VisualStudio2013はGitを使ってコード管理できるようなので都合も良いです。リポジトリ置き場には非公開リポジトリを無料で使えるBitBucketを使います。

Git

コマンドラインが基本でしょう、ということで、コマンドライン版Gitを使えるようにします。

Gitオフィシャルサイト
http://www.git-scm.com/

ここからWindows版バイナリをダウンロードし、インストールします。この記事の時点で最新版が Git-1.9.4-preview20140929.exe でした。
インストールされる Git Bash がGitを使うコマンドライン環境になります。

Gitの日本語サポートは完全ではありません。ファイル名は英数字のみにしたほうが無難でしょう。
Git Bash もインストールのままでは足りない場合があるので必要に応じ設定します。
現象
日本語が四角(□)で表示されてしまう
解決方法
コンソールウィンドウのフォントを設定しなおします。
・[スタートメニュー]から[Git Bash]を選んで右クリックして[プロパティ]を選択、設定画面を呼び出す
・[フォント]タブでフォントを選びなおして[適用]
現象
lsで日本語ファイル名が??????になってしまう
解決方法
ls --show-control-chars で表示されます。.bashrcを作りalias設定しておくとよいでしょう

準備ができたら勉強開始です。
基本的なGit操作の勉強には下記サイトがお勧めです。短いムービーでチュートリアル形式で解説されているので取っ付き易いと思います。

【ドットインストール】git入門
http://dotinstall.com/lessons/basic_git

 BitBucket + Git

Gitがなんとなく判ったら BitBucket にリポジトリを作って使ってみましょう。

【なんとなしの日記】BitBucket(Git)が便利すぎるので使い方をまとめとく
http://babyp.blog55.fc2.com/blog-entry-939.html

リポジトリにはSSH接続もできます。ssh-keygenは Git Bash から使用できます

【株式会社CFlatの明後日スタイルのブログ】BitbucketにSSHでアクセスする
http://cflat-inc.hatenablog.com/entry/20130311/1362955659


VisualStudio2013 + BitBucket + Git


BitBucketの使い方がわかってきたら、VisualStudio2013からBitBucketにつなげてみましょう。注意点として、VisualStudio2013のGitはSSH接続がサポートされていないようです。HTTPSでリポジトリを指定してください。

【某エンジニアの日記】Visual Studio 2013 と Bitbucket
http://ina365.wordpress.com/2014/06/17/visual-studio-2013-%E3%81%A8-bitbucket/


これでひと通り使えるようになりました。あとは実際に使って慣れていきましょう。

2014年11月23日日曜日

WPF勉強(2) 終了ボタンの実装

  • .Net4.5
[終了]ボタンを押した時にアプリが終わるようにします。

終了ボタンのXAML記述

WPFはxamlでウィンドウの配置等を記述します。これはデザインエディタと連動していて、エディタでグラフィカルに編集しても自動的にxamlに反映されます。

MainWindow.xaml
<window x:Class="CommandWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="400" Width="560">
    <grid Margin="0,0,0,0">
        <textbox x:Name="TextBoxFolder" Height="23" Margin="10,10,90,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="フォルダを指定"/>
        <button x:Name="ButtonFolder" Content="フォルダ" Margin="0,10,10,0" VerticalAlignment="Top" Click="ButtonFolder_Click" HorizontalAlignment="Right" Width="75"/>
        <richtextbox x:Name="TextBoxLog" Margin="10,38,10,52" VerticalScrollBarVisibility="Visible" IsReadOnly="True">
            <flowdocument>
                <paragraph>
                    <run Text="ここに実行ログを出力"/>
                </Paragraph>
            </FlowDocument>
        </RichTextBox>
        <progressbar x:Name="ProgressBarRun" Margin="10,0,10,37" Height="10" VerticalAlignment="Bottom"/>
        <button x:Name="ButtonRun" Content="実行" Margin="0,0,90,8" Click="ButtonRun_Click" Height="24" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75"/>
        <button x:Name="ButtonClose" Content="終了" Margin="0,0,10,8" Click="ButtonClose_Click" Height="24" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75"/>
    </Grid>
</Window>

ほとんどの属性はエディタでぐりぐりやっていれば勝手に設定されるのですが、若干わかりにくい属性について説明します。

x:Name="ButtonClose"

この「名前」は、表示名(Content)ではなく、コードからコントロールにアクセスする変数名になります。

Click="ButtonClose_Click"

ボタンクリックしたときに呼ばれるメソッド名になります。エディタ上でボタンをダブルクリックすると自動で追加されますが、"(x:Name)_Click"というような名前に依存した呼出名になります。名前が定義されていない時は"Button_Click"という呼出名になるようです。


終了ボタンのコード実装

簡単かと思ったのですが、これぞという解説がされている情報を探しだすのに案外手間取りました。判ってしまえば簡単なんですけどね。自身のClose()を呼ぶだけでした。

MainWindow.xaml.csの一部
// アプリ終了
private void ButtonClose_Click(object sender, RoutedEventArgs e)
{
    this.Close();
} 

URL
http://msdn.microsoft.com/ja-jp/library/bb655895%28v=vs.90%29.aspx

WPF勉強(1) なにか作ってみることにした

Visua lStudio Community 2013 でどう勉強しようか、ということでWPFアプリをなにか作ってみることにしました。


機能としては

・フォルダを指定する
・フォルダのすべてのファイルに対してコマンドを実行する

といった感じです。この手の作業はコマンドラインで用足りるのですが、勉強ということでWPFで作ってみます。


で、さっそく新規プロジェクトを作成し、ゴリゴリっとエディタでハリボテWindowを作ってみました。このあたりのツールはFormで作った時と似ていたのでなんとなく出来ました。



ちなみに私のスキルは

・C#:そこそこ
・Windowsプログラム能力:ほんの少し
・.NET:ほんの少し
・WPF:未知の領域

といった感じですが、さて、どうなるでしょう。

2014年11月22日土曜日

Visual Studio Community 2013 を Emacs キーバインドにする

  • VS2013


エディタをつかうとどうも指が勝手にEmacs操作してしまう、という悩みを解決するためにEmacsキーバインドを導入してみました。 調べてみたところ、こちらのサイトのやり方で出来ました!

Emacs Emulation Extension を Visual Studio 2012にインストールする
http://statemachine.hatenablog.com/entry/20130522/1369233834

違うのは「11.0にする」ところを「12.0にする」だけで、あとは同じです。
これでVisualStudio全体がおおよそEmacsキーバインドで操作できるようになりました。ただ、外部からのコピペが効かない等、ところどころ動作がおかしい部分があります。最近のバージョンではMicrosoftが公式にEmacsキーバインドをサポートしなくなったのも、どこかに無理が出ているからなのでしょうかね。

2014年11月21日金曜日

Visual Studio 2013 Professional版相当を無料で!

 

Express版ではありません!
「Visual Studio Community 2013」という名でProfessional版相当のVisualStudio製品の提供が開始されたんですよ奥さん!
ライセンスはちとややこしいけど、個人で使う範囲では無料です!

さあて、Windowsプログラムの勉強を再開するかな

URL
http://www.microsoft.com/ja-jp/dev/products/community.aspx
http://www.forest.impress.co.jp/docs/news/20141113_675880.html