ASP.NETのCompilerExceptionエラー「ソース ファイル 'C:\Windows\TEMP\xxx.cs' が見つかりませんでした。」

IIS/ASP.NET(Sitecore)でたまにでるエラー。

例外の種類: CompilerException
例外メッセージ: ソース ファイル 'C:\Windows\TEMP\xxxxxxx.cs' が見つかりませんでした。
場所 Sitecore.CodeDom.Compiler.CSharpCompiler.Compile(String sourceFile, String code, String assemblyFile, StringCollection referencedAssemblies)

http://blog.livedoor.jp/snowcastle/archives/51371864.html

C:\Windows\TEMPに適切な権限を与えると良い模様。

アジャイルマーケティングのマニフェスト

最近流行りつつある、アジャイルマーケティングについて少しまとめました。

agilemarketingmanifesto.orgというページにて「アジャイルマーケティングマニフェスト」が公開されています。マニフェストは以下の7つから構成されています。

  1. 私見や慣習よりも、検証と学び
  2. 組織と序列よりも、顧客にフォーカスしたコラボレーション
  3. ビッグバンキャンペーンよりも、最適化と繰り返しによるキャンペーン
  4. 静的な予測よりも、顧客発見プロセス
  5. 柔軟 対 厳格な計画
  6. 計画に従うことよりも、変化への対応
  7. 少ない大きな賭けよりも、多くの小さな実験

2012年6月にサンフランシスコで開かれたSprintZeroというイベントをきっかけに作られた声明です。完成というわけではなく、フィードバックを受け改善していくステータスのようです。


アジャイルマーケティングマニフェストは、以下の変遷をして今に至っているようです。


Travis Arnold氏のブログにあるように、マニフェストの基本となるポイントは以下であると述べています。

  1. 透明で(Transparent)
  2. 持続性があり、(Sustainable)
  3. 相互作用があり、(Interactive)
  4. 測定可能で、(Measured)
  5. 反復して、(Iterative)
  6. 適切であること(Relevant)

このマニフェストは、アジャイルソフトウェア開発宣言のデジタルマーケティング版です。アジャイルソフトウェアの12の原則にあたるアジャイルマーケティングの原則(現時点では10個)も策定中のようです。


MacからWindowsへリモートデスクトップ接続する時の注意点(日本語/ENキーボード誤認問題など)

MacOSからWindowsリモートデスクトップでつなぐツールと注意点の紹介です。

[旧アプリ] Remote Desktop Connection for Macの場合

Remote Desktop Connection for Mac」は、5年ほど前から存在するMicrosoftリモートデスクトップクライアントです。
MacでRDPファイルをダブルクリックすると、サーバー名(必要があればコロンの後にポート番号)を入力して「接続」をクリックします。



次に「ユーザー名」「パスワード」「ドメイン」を入力するダイアログが出ますので、適切に入力して接続します。注意点として、サーバーにドメインを使わずユーザー名とパスワードだけの場合(Azureに接続する場合やWorkgroupの場合)は空っぽに変更します。



[新アプリ] Microsoft Remote Desktopの場合

Microsoft Remote Desktopは2013年10月にMicrosoftに公開された新しいリモートデスクトップクライアントです。(同タイミング、同名でAndroid・iPhone用リモートデスクトップクライアントも公開されました)
こちらではドメイン入力欄がないので、ドメインユーザーの場合は「ドメイン名\ユーザー」と入力します。

接続先のリスト管理機能が備わっている反面、キーボードショートカットのカスタマイズ機能が備わっていないので、今一歩です。ただ、今後はこちらが主流となるものと思われます。

[注意点] MacBookでリモデ時に日本語キーボードが認識されない問題

MacBookの場合、MacOSクライアントに加え、VMWare FusionのWindowsOSでも、106/109キーボード(日本語JISキーボード配列)と認識せず、101/102 US EN英字キーボード配列と認識されてしまう問題があります。リモートマシン側で事前に自動ログインを行うことで回避することが定番のようですが、サーバー運用としては微妙なので、最初のログインのみWindowsPCでログインするのが良いと思います。(逆にMacマシンのユーザーが最初にログインした場合はログオフするように言っておかないと、WindowsPCを使う人も困りますね)

2017年追記

<root>
    <appdef>
        <appname>MicrosoftRDC</appname>
        <equal>com.microsoft.rdc.mac</equal>
    </appdef>
    <symbol_map type="KeyCode" name="RDC_VK_BACKQUOTE" value="0x32"/>
    <item>
        <name>Microsoft Remote Desktop App v8.0.14以降 かな-> 英数/かな</name>
        <identifier>private.Microsoft_rdc_Custom</identifier>
    <!-- Microsoft Remote Desktopのみを対象にする -->
        <only>MicrosoftRDC</only>
    <!-- [カタカナ]キーをBACKQUOTEキーに置き換え -->
        <autogen>__KeyToKey__ KeyCode::JIS_KANA, KeyCode::RDC_VK_BACKQUOTE</autogen>
    </item>
    

    <appdef>
        <appname>MicrosoftRDC</appname>
        <equal>com.microsoft.rdc.mac</equal>
    </appdef>
    <symbol_map type="KeyCode" name="RDC_VK_BACKQUOTE" value="0x32"/>
    <item>
        <name>Microsoft Remote Desktop App v8.0.14以降 EISU-> 英数/かな</name>
        <identifier>private.Microsoft_rdc_Custom2</identifier>
    <!-- Microsoft Remote Desktopのみを対象にする -->
        <only>MicrosoftRDC</only>
    <!-- [カタカナ]キーをBACKQUOTEキーに置き換え -->
        <autogen>__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::RDC_VK_BACKQUOTE</autogen>
    </item>
</root>

↓を参考にしました。ありがとうございます。
qiita.com



VS2012で、App.configを環境別にApp.Debug.config/App.Release.configで更新する

Web.configの環境切り替え(Web.Debug.config/Web.Release.config)と同じことを、コンソールアプリケーションやWindowアプリケーションで行う方法のメモです。

色々なやり方がありましたが、簡単だった上記ページの方式を使いました。
手順は以下の通り。


1.プロジェクトにApp.Debug.configとApp.Release.configを追加する

  • App.Release.Configの中身の例。Web.Release.configの設定方法と同様
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="キー名" value="置き換える値"  xdt:Transform="Replace" xdt:Locator="Match(key)"/>
  </appSettings>
</configuration>
  • App.Debug.Configの中身の例(App.configと差し替える項目が無ければ以下の通り)
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
</configuration>

個人的にはApp.Debug.Configは無くても大丈夫です。

2.プロジェクトファイル( .csproj)をテキストエディタで開く


3.プロジェクトファイルのItemGroupの中を直す

<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />

<Content Include="App.config" />
<Content Include="App.Debug.config" >
  <DependentUpon>App.config</DependentUpon>
  <SubType>Designer</SubType>
</Content>
<Content Include="App.Release.config" >
  <DependentUpon>App.config</DependentUpon>
  <SubType>Designer</SubType>
</Content>

に直す


4.プロジェクトファイルにTargetを追加する
の下で、の前に以下を入れる

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
  <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
  <ItemGroup>
    <AppConfigWithTargetPath Remove="app.config" />
    <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
      <TargetPath>$(TargetFileName).config</TargetPath>
    </AppConfigWithTargetPath>
  </ItemGroup>
</Target>

VS2012なのでv10.0ではなく、v11.0にしています


5.ビルドするDebugビルドすればApp.debug.configの内容で差分更新され、ReleaseビルドすればApp.release.configの内容で差分更新されました。

TFSやJenkinsなどのCIサーバーでデプロイする場合は、VSのApp.Release.configの中身は空でも良いかもしれません。CIサーバーのデプロイ時に本当のApp.Releaase.Configで上書きするほうが、間違って本番につないでしまう可能性がないので安全だと思います。

EntityFramework4のDBファーストでDbContextのコードを生成

VS2012の.NET4.5ベースのEntityFramework5.0で、データベースファースト、モデルファーストから出力したコードは軽量なDbContextベースになります。


これに対して、.NET4.0プロジェクトでEF5をインストールした場合、EFのバージョンは4.4となります。この時、DBファーストのジェネレートをするとObjectContextベースでコードが生成されてしまいます。

EF4.3のコードファーストがDbContextなので、EF4.4のDBファーストでもDbContextベースにできるだろうと思い調べたところ、別途テンプレートをインストールすればDbContextベースにできることがわかりました。


手順は次の通り

  • モデル(*.EDMX)ファイルを開く
  • ダイアログで、右クリックして「コード生成項目の追加」をクリック
  • オンラインテンプレートから「EF 4.x DbContext Generator for C#」を選ぶ
  • T4テンプレートがインストールされる
  • T4ファイルの下に、DbContextベースのコードが生成されるようになる

ちなみに上記テンプレートはMicrosoft製です。



この情報は、結局隣のチームの人から情報をもらったので「最初から聞いておけば良かった..」という感じでした。
EntityFrameworkを使わない人、5.0しか使っていない人にとっては不要なエントリですが、備忘録として書いておきます。

「接続名'OraAspNetConString'がアプリケーション構成で見つからないか、接続文字列が空です」エラー

ASP.NETで次のようなエラーが出た時の対応方法です。

                                                                                                          • -

'/' アプリケーションでサーバー エラーが発生しました。

構成にエラーがあります。説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 パーサー エラー メッセージ: 接続名'OraAspNetConString'がアプリケーション構成で見つからないか、接続文字列が空です。
ソース エラー:

<siteMap>
  <providers>
    <add name="OracleSiteMapProvider" type="Oracle.Web.SiteMap.OracleSiteMapProvider, Oracle.Web, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" securityTrimmingEnabled="true"/>
  </providers>
</siteMap>

ソース ファイル: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 行: 272

                                                                                                          • -


このような場合の対策ですがはWeb.configで、以下の様にmachine.configの設定をクリアする設定をいれます。

<siteMap>
  <providers>
    <clear />
    
  </providers>
</siteMap>

メンバーシップの場合も同様です。

JavaScriptライブラリ実践活用111

JavaScriptライブラリ実践活用111」を読みました。
この本は、大量にあるJavaScript関連のライブラリをピックアップして、それぞれの使い方を解説しています。

JQuery UI、Twitter Bootstrap、CoffeeScriptYUIQUnitExt JS、Backbone.js、Knockoutといった有名どころに加え、UI/スマホ/フレームワーク/テストに関する便利なライブラリが111個も紹介されています。

JavaScript ライブラリ実践活用〔厳選111〕 (Software Design plus)

JavaScript ライブラリ実践活用〔厳選111〕 (Software Design plus)

JavaScriptライブラリ実践活用厳選111 [ WINGSプロジェクト ]

1つ1つのJSライブラリ毎に、「スクリーンショット、概要、サンプルコード、サンプルコードの解説」がワンセットで書かれているため、JSライブラリの使い方を簡単に学ぶことができます。

JSを活用して、素敵なサイトを作りたい方におすすめの一冊です。