こんにちは。
今回も宜しくお願いします。
前提・実現したいこと
VisualStudioにてローカルで動作するフォームアプリケーションの開発をしています。
2パターンの約5,000,000文字の文字列リテラルを2つのstring型の変数にそれぞれ格納しましたが
コンパイル時にエラーが起きてしまいます。(下部エラー文参照)
エラーの回避方法若しくは代替案を教えて下さい。
この5,000,000の文字列は、元々csvファイルとして保管されていたものをスクリプトを使用して1行にしたものです。
仕様として、外部ファイルを参照してはいけないことになっているため、
exeの中にこの文字列を入れ込む必要があると考えています。
外部ファイルを参照できない理由としては、そのcsvファイルの内容を秘匿したいため とのことです。
私の中で考えた代替案ですが、以下となります。
①データベースを使用する
②zippassでcsvファイルを持っておき、参照時にexe内部で解凍する
③DataGritViewをメインフォーム内にvisible=Flaseで配置しておき、その中にデータを格納する
本来であれば、①を採用すべき案件だと思いますが、残念ながら工数が残り少ないため新たにDB
関連の知識を修得するための時間がありません。
また、②を採用するにしても、解凍時に一時的に解凍されたファイルがどこかに配置されてしまう可能性があるため秘匿機能としては劣ってしまうことを懸念しています。
可能であれば、既に出来ているプログラムをあまり変更すること無く、本エラーを回避することが望ましいです。
発生している問題・エラーメッセージ
エラー CS8103 プログラムで使うユーザー文字列の長さの合計が許可されている制限を超えています。文字列リテラルの使用を減らしてください。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2017
Version 15.7.3
VisualStudio.15.Release/15.7.3+27703.2026
Microsoft .NET Framework
Version 4.8.03761
下記では、「String Objectは2GB、もしくは約10億文字」は格納可能と書いてあります。
https://www.kinakomotitti.net/entry/2017/12/29/200615
下記では、
(原文)"I guess its a new compiler in VS2015, which restricts too much use of string literals."
(訳)「VS2015の新しいコンパイラで、文字列リテラルの使用が制限されすぎていると思います。」
とあります。VSの仕様上仕方が無いのでしょうか?
https://stackoverflow.com/questions/37193372/c-sharp-combined-length-of-user-strings-used-by-the-program-exceeds-allowed-limi/50522293
宜しくお願いします。
回答4件
あなたの回答
tips
プレビュー