string x = @"<document.write(""<SCR""+""IPT TYPE=""'text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");";
@ プレフィックスを使用すると、エスケープが簡単になります。それぞれの " を "" に変えるだけです。
JavaScript を外部ファイルに保存すると、プログラムの保守がはるかに簡単になります。StringBuilder を使用していると思いますので、定数スクリプトのビットといくつかの動的な値を混在させることができますか? ファイルに書き込むこともできますが、動的な値には次のようなエスケープを入れます。
var fromCSharp = {0};
次に、実行時に JS ファイルをロードし、それをフォーマット文字列として string.Format に渡して、{0}、{1} などの出現ごとに置き換える値を指定します。フォーマット文字列をファイルからロードする必要があるのは 1 回だけです。そしてそれをキャッシュしておきます。
また、JavaScript に挿入する値自体が文字列リテラルの場合、JavaScript の構文に従ってエスケープする必要があります。