-
Type: Task
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: 1.3.18
-
Component/s: S2Container.NET
-
None
-
Environment:.NET Framework4.0
.NET Framework4.0上でSeasar.NETを使用する際に問題がないか調査
1.コンパイルする際にエラー、警告は発生しないか?
2.Seasar.Testは全て成功するか?
3.サンプルプロジェクトは動作するか?
他にも確認する必要があることがあれば
追記、コメントをお願いします。
確認環境:
Windows7(64bit),SQLServer2008,Gallio/MbUnit3.1
.NET Framework4.0
===========================================
1.コンパイルする際にエラー、警告は発生しないか?
===========================================
A.発生する
○コンパイルエラー -----------------------------
>Seasar.DynamicProxy
(参照ライブラリをCastle.DynamicProxy.dll(ver.1.1.5.0)から
.NET4.0対応のCastle.Core.dll,Castle.Windsor.dll(ver.2.5.0.80)に切り替えた場合)
→Caltle.DynamicProxyのIF変更によるエラー
・'Seasar.Framework.Aop.Proxy.DynamicAopProxy' はインターフェイス メンバー 'Castle.DynamicProxy.IInterceptor.Intercept(Castle.DynamicProxy.IInvocation)' を実装しません。(Seasar.Framework.Aop\Proxy\DynamicAopProxy.cs) 他
>Seasar.Unit
(参照ライブラリをMbUnit(ver.2.4)からMbUnit.dll,Gallio.dll(ver.3.1)に切り替えた場合)
→MbUnitのIF、名前空間変更によるエラー
・型または名前空間名 'Framework' は名前空間 'MbUnit.Core' に存在しません。アセンブリ参照が不足しています。
(Seasar.Quill.Unit\QuillAttribute.cs他)
・型または名前空間名 'Invokers' は名前空間 'MbUnit.Core' に存在しません。アセンブリ参照が不足しています。
(Seasar.Extension.Unit\S2Attribute.cs他)
・型または名前空間名 'DecoratorRunInvoker' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。(Seasar.Extension.Unit.S2TestCaseRunInvoker.cs他)
・型または名前空間名 'DecoratorPatternAttribute' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。Seasar.Extension.Unit.S2Attribute.cs)
・型または名前空間名 'IRunInvoker' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
(Seasar.Extension.Unit\S2Attribute.cs他)
>Seasar.Tests
→MbUnitのIF変更によるエラー
(参照ライブラリをMbUnit(ver.2.4)からMbUnit.dll,Gallio.dll(ver.3.1)に切り替えた場合)
・'ColumnAttribute' は、'Seasar.Dao.Attrs.ColumnAttribute' と 'MbUnit.Framework.ColumnAttribute'' 間のあいまいな参照です。
(Seasar.Tests\Dao\Impl\RelationKeyTest.cs)
・'MbUnit.Framework.Assert' に 'Ignore' の定義がありません。
(Seasar.Tests.Dao.Id.IdentityIdentifierGeneratorTest他)
○警告 ----------------------------------------
・Seasar.Tests
'System.Data.OracleClient.OracleCommand' は古い形式です: 'OracleCommand has been deprecated.
http://go.microsoft.com/fwlink/?LinkID=144260' Seasar.Tests\Extension\ADO.Impl\BasicDbParameterParserTest.cs 他
==================================================
2.Seasar.Testは全て成功するか?
==================================================
A.失敗するものがある
*要詳細調査 ------------------------------------------------------------------
・Seasar.DynamicProxy
→プロパティインジェクションが実行されない(setterが呼ばれていない)
→インスタンスがsingletonにならない
*.NET4.0、参照ライブラリの変更により発生した可能性あり ----------------------------------
・Seasar.DynamicProxyを使用したテスト
(詳細は https://www.seasar.org/issues/browse/CONTAINERNET-138 参照)
・DtoMetaDataImpl#GetPropertyTypeを使用したテスト
→取得されるプロパティの順番が変わっているため自動生成されたSQL文のAssertに引っかかる
・Assert.AreEqualsでint型とDecimal型の値を比較しているテスト
→同じ数値でも別の値として扱われる
(例えば同じ「7777」でも「7777と7777b」として比較される。Decimalの方をInt32にキャストすると7777同士の比較になる)
・ResourceUtilTest#TestGetResourceNoException_動的アセンブリ
→「System.InvalidCastException: 型 'System.Reflection.Emit.InternalAssemblyBuilder' の
オブジェクトを型 'System.Reflection.Emit.AssemblyBuilder' にキャストできません。」
・「Table_Name」、「_Table_Name」、「Table_Name」,「TableName」が
→同じ名前として処理されている?
→同じWindows7(64bit)+SQLServer2008でSeasar.NET1.3.18のテスト(.NET2.0)を
動かした場合は成功する
・float型を使用しているテスト
→文字列に変換した場合の有効桁数が6桁→14桁になっている?
→同じWindows7(64bit)+SQLServer2008でSeasar.NET1.3.18のテスト(.NET2.0)を
動かした場合は成功する
*64bitOSでの問題点(.NET4切替ではなく環境の問題なので別タスクで管理したい) -----------------
・Microsoft.Jet.OLEDB4.0は32bitのOSでしか動作しない?
→「System.InvalidOperationException: 'Microsoft.Jet.OLEDB.4.0' プロバイダーはローカルのコンピューターに登録されていません。
場所 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)」
→http://architect360.apricot-jp.com/500tips/microsoftjetoledb40.html
→XlsRader,XlsWriterが正常に動作しなくなる
テストした環境
○成功:32bit windowsXP
×失敗:64bit windows7
*Windows7(多分vistaも)上での問題点(.NET4切替ではなく環境の問題なので別タスクで管理したい) ----
・DTCxxxInterCeptorを使用したテスト(例:Seasar.Tests.Extension.Tx.Impl.DTCRequiredInterceptorTest)
→System.EnterpriseServices.RegistrationException: このタスクを実行するには、管理者資格情報が必要です。システム管理者にお問い合わせください。 ---> System.EnterpriseServices.RegistrationException: アセンブリ 'Seasar, Version=1.3.18.0, Culture=neutral, PublicKeyToken=1d0d0c484d50ca62' を登録できませんでした。 ---> System.UnauthorizedAccessException: レジストリ キー 'HKEY_CLASSES_ROOT\Seasar.Framework.Util.CaseInsentiveSet' へのアクセスが拒否されました。
=========================================
3.サンプルプロジェクトは動作するか?
=========================================
1,2の問題が片付いた後に確認としたい。