きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

NuGetのファイル変換機能(Source Code Transformations)を使うとBOMが外れる?

NuGetのパッケージの機能に『ファイル変換機能(Source Code Transformations)*1』という、「ソースコードそのものを、あらかじめ設定したプレースホルダを置換して配置する」機能があります(詳細は公式ドキュメントのこのあたりを参照)。


しかしながら、『ファイルに付いていた筈のBOMが、取込み先のプロジェクトでは外れてしまっている』ことに気が付きました。


通常、Visual Studioで扱われるファイルはBOM(Byte Order Mark)付のutf-8となっています。utf-8に一般的にはBOMは合ってもなくてもかまいませんし、実はVS上でも多くの場合は問題なさそうです。

しかし、たまに問題が出る場合があります。例えば日本語含んだaspxファイルで文字化けが起こります(今回もこれで気が付きました)。


とりあえず、BOMを任意に付与できるテキストエディタでBOMだけ付与すれば問題はありませんが、NuGet側で対応してもらえると嬉しいですね…。


#NuGetのソースをちらっと見たところ、該当ファイルをstremで開いて置換を行い保存してるようで、おそらくですがその際にBOMが考慮されていないような感じ…に見えました(適当

*1:公式な(?)日本語訳がわからないので、とりあえず勝手に訳してこう書いておきます。