複数のクライアント マシンにあるソフトウェアの .DLL ローダー/アップデーターを実装しています。ファイルが最新バージョンであるかどうかを判断するために、マシン上のファイルのバージョンを確認し、それを SQL に渡す必要があります。フォルダー構造は次のようになります。
- 応用
--- ファイル
---- サブフォルダ
----- Loader.exe
ローダー .exe はList(of FileInfo)
、アプリケーション フォルダーから を取得します。このフォルダーにはさまざまなアセンブリがあり、チェックするためにアセンブリのバージョンを取得するためにAssembly.LoadFile(x.FullName).GetName().Version
、ファイルの更新または後でファイルへのアクセスが必要な場合は、これを使用しています。情報をデータテーブルに取得してから、SQL のストアド プロシージャに渡します。
Dim dt As New DataTable("ModuleTableVariable")
dt.Columns.Add("ModuleName")
dt.Columns.Add("ModuleVersion")
Dim rows As List(Of DataRow) = fileList.Select(Function(x)
Dim row = dt.NewRow()
row("ModuleName") = x.Name
If x.Extension = ".dll" Or x.Extension = ".exe" Then
row("ModuleVersion") = Assembly.LoadFile(x.FullName).GetName().Version
Else
row("ModuleVersion") = x.CreationTime
End If
Return row
End Function).ToList()
したがって、明らかに、私がアセンブリ バージョンを参照しているセクションは、問題のファイルへのアクセスを破棄する何らかの using ステートメントを変更または実装する必要がある場所です。
注:完全なLINQである必要はなく、適切なusingステートメントまたはソリューションを示している場合は、C#でも回答を受け入れます。