しかし、script タグの src 属性に関しては、チルダを使った仮想パスや相対パスで記述しても変換が一切行われません。
なので、Control.ResolveClientUrl メソッドや VirtualPathUtility.ToAbsolute メソッドを使用して変換する必要があります。幸い、HTML タグの属性値ならば <%= %> が使用できるので (コードのハイライトやインテリセンスは効きませんが) 簡単に対処できます。
Site.Master
<head runat="server">
<title><asp:Localize runat="server" Text="<%$ Resources:CommonResource, SystemName %>" /></title>
<link href="Common.css" type="text/css" rel="stylesheet" />
<link href="Site.css" type="text/css" rel="stylesheet" />
<script src="<%= this.ResolveClientUrl("~/Common.js") %>" type="text/javascript"></script>
<script src="<%= this.ResolveClientUrl("~/Site.js") %>" type="text/javascript"></script>
<asp:ContentPlaceHolder ID="HeadPlaceHolder" runat="server" />
</head>
なお、スタイルシートに関しては Thema 機能を使用すれば link タグを記述する必要はなくなりますが、全てのスタイルシートが読み込まれてしまうため、(スタイルシートの) クラス名の衝突の回避に一工夫必要だったりと管理が複雑化します。テーマの切り替えが不要ならば使用しない方が良いかと思います。
[関連]
C#と諸々 ルートディレクトリを示す ~ 演算子
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/271-c4dffbd1