SVN を更新するたびに T4MVC が生成したコードを失うという問題があります。. generated.cs ファイルを削除してテンプレートを再実行することで修正できます。しかし、これは少し面倒です。足りないものはありますか?
最初に少し背景情報を...
C# v4、VS2010、および ASP.NET MVC2 を使用しています。ソース管理に Subversion を使用しています。また、VS2010 内で多数のアドインと拡張機能を実行しています ...
- Huagati DBML.EDMX ツール
- Zippy.Chirp (T4MVC テンプレートの自動実行用)
- リシャーパー v5
- ビジュアルSVN
- 割り当てを調整する
- ASP.NET OpenID Web サイト
- ブレース コンプリーター (無効)
- Code4ブログ
- devColor
- 選択した単語の出現箇所をすべて強調表示 (無効)
- HTML スペル チェッカー (無効)
- Lipsum 2010 - Lorem Ipsum ジェネレーター
- Visual Studio 2010 の PowerCommand
- 仕事効率化電動工具
- スペルチェッカー (無効)
- Visual Studio バックグラウンド カスタマイザー
- Visual Studio カラー テーマ エディター
- VS10x コードマーカー
- World of VS Default Browser Switcher
私は実際にこの質問を作業コピーの更新として書いており、各段階でできることをキャプチャしています...
ステップ1
その日の作業を開始するために IDE を開きましたが、作業コピーを更新する前に、既に 4 つのコンパイラ警告が表示されています...
Warning 1 The C# 2.0 and C# 3.5 compilers are no longer supported. Templates will always be compiled with the version 4 compiler instead of 'v3.5' as specified. C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 18 4
Warning 2 Compiling transformation: Unreachable code detected c:\Users\antony\AppData\Local\Temp\z04plrve.0.cs 1015 17
Warning 3 Compiling transformation: Assuming assembly reference 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', you may need to supply runtime policy C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 1 1
Warning 4 Compiling transformation: Unreachable expression code detected c:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 968 33
ステップ2
ソリューション エクスプローラーでルート ノードを右クリックし、コンテキスト メニューの Visual SVN 部分から [更新] を選択して、作業コピーを更新しています。
ほとんどの . generated.cs ファイルでツリーの競合があります...
- HomeController.generated.cs (ツリーの競合)
- T4MVC.cs (ツリーの競合)
- T4MVC.ExplicitExtensions.cs (削除、追加)
- GoodsInController.generated.cs (ツリーの競合)
- SharedController.generated.cs (削除、追加)
- StockListController.generated.cs (ツリーの競合)
- StockCheckController.generated.cs (ツリーの競合)
- AuthController.generated.cs (ツリーの競合)
- GoodsOutController.generated.cs (ツリーの競合)
ステップ 3
私は今、私の対立を解決しています。私は常にローカルファイルを保持し、解決済みとしてマークしているため、ここに問題があると思われます。最初の競合 (HomeController.generated.cs) に対してこれを実行しました。次に、ローカル コピーと比較してみましたが、次のエラー メッセージが表示されました...
リビジョン 14638 で 'C:/Data Files/Projects/Web/ByBox.Vanventory/ByBox.Vanventory/HomeController.generated.cs' のリポジトリの場所が見つからない
うわあ - ちょっと待って!
ツリーの競合の理由は、生成されたファイルが実際に削除され、プロジェクトに再度追加されていることに気付いたときです。現在、T4MVC 自体がこれを行っているのか、それとも Chirpy 拡張機能を行っているのかはわかりません。Chirpy のソース コードを調べました (コードプレックスの Web ブラウザーでブラウジングするだけです) が、そうではないようです。
Subversion でのツリーの競合の原因は、 2 人のユーザーが両方ともコントローラーに変更を加えているためだと思います。これにより、 2 人とも同じファイル名で新しいファイルが生成されます。したがって、Subversion には 2 つの新しいファイルがあり、どうすればよいかわからないため、ツリーの競合としてフラグを立てます。
同じく T4MVC を使用している同僚に、問題がないことを確認しましたが、コントローラー コードを変更しているのは彼らだけです。私のプロジェクトに 2 人が参加する前は、問題はありませんでした。この問題は、2 番目の人がプロジェクトに取り組み始め、コントローラー コードに変更を加えてから発生しました。
では、ここで露骨に明らかな何かが欠けているのでしょうか、それとも T4MVC や Chirpy を悪用しているのでしょうか?
今のところ、私は少しハックな解決策を持っています。すべての controller.cs ファイルに「触れる」ための powershell スクリプトを作成しました。それをVS2010の外部ツールに入れました。問題が発生したら、その powershell スクリプトを実行してから、T4MVC テンプレートを強制的に実行するソフトウェアをビルドすると、すべてのエラーが解消されます。これは理想的ではなく、「ただうまくいく」ことを望みます。
編集
明確にするために、私が達成したい状況は、朝にビジュアルスタジオを開き、(VisualSVN を介して) SVN の更新を行い、生成されたコードにコードが含まれていないためにビルドに時間を費やす必要がないことです。昨日そこにあったファイル。
では、テンプレート/T4MVC はビジュアル スタジオでどのように機能するのでしょうか?
(生成されたファイルを削除し、実行するたびに再作成する場合は、使用を停止する必要があります。これは、Subversion を使用したり、生成されたコードであるコードで複数の人が作業したりするのには適していないためです。に追加)