10

aspnet_compilerを使用して、すでにコンパイル済みのプロジェクトをある場所から別の場所に移動しようとしています。リビジョン管理にSubversionを使用しています。

このプロセスは基本的に、すべてのコードをSubversionから取得し、ビルドを実行してから、aspnet_compilerを呼び出します。

私の問題は、除外されたascxファイルがあるときに発生します。このファイルは最新のコードの一部ですが、通常のビルドコンパイラはそれを無視するため、問題はありません。ただし、Aspnet_compilerは、その特定のコントロールの背後にあるコードを見つけることができないため、爆発します。

わからない

  • 私はこれを正しく行っています。
  • Subversionから正しいファイルツリーを取得する方法があります
  • もっと簡単な方法があります。また
  • これは予想されることであり、除外されたファイルを毎回削除する必要があります。

助けていただければ幸いです。

トム

4

4 に答える 4

10

.NET 4.5または4.5.1(どちらかはわかりません)以降、aspnet_compiler.exeに-xオプションが追加され、ディレクトリをコンパイルから除外できるようになりました。このオプションは、コマンド「aspnet_compiler /?」から見つけることができます。

-x            The virtual path of a directory that should be excluded from precompilation.
This switch can be used multiple times.

例:

私のウェブサイトには「ToBeExcluded」という名前のフォルダがあります。次のコマンドを使用して、Webサイトをプリコンパイルし、そのフォルダーを除外できます。

aspnet_compiler -v /foo -p "C:\MyWebsite" -x ToBeExcluded "c:\temp\web"
于 2015-11-02T18:14:11.693 に答える
3

これは予想されることです。Aspnet_compiler.exeはアプリケーション内のすべてのファイルをコンパイルし、プロジェクトファイルは調べません。したがって、除外されたファイルの概念はありません。

Babak Naffasによるファイルの削除の提案は、ファイルを毎回手動で削除する(または削除のスクリプトを作成する)よりも、おそらくファイルを処理する最も簡単な方法です。

于 2011-03-17T06:42:03.250 に答える
2

私はこれで長い間苦労していました。しかし、最終的に回避策を見つけました

attrib +h folderToExclude & runAspComplierWithAllOptions & attrib -h folderToExclude

フォルダを非表示->コンパイル->フォルダを表示。

于 2017-04-04T10:32:18.847 に答える
2

これを行うには非常に簡単な方法があります。除外するフォルダーにhidden属性を設定すると、aspnet_compilerスキップされます。

このエラーの一般的なケースは、node_modulesによって作成されたフォルダです。npm install

npm installスクリプトまたはコマンドラインから実行する場合は、実行後にコマンドattribを実行nmp installしてフォルダーを非表示にすることができます。

attrib +H node_modules

npm installプロジェクトから実行する場合は、次のようなタスクmsbuildを追加できます。exec

<PropertyGroup>
    <HideFolder>attrib +H "$(PackageJsonFolder)\node_modules"</HideFolder>
</PropertyGroup>
<!-- next line is for debugging, remove it when finished -->
<Warning Text="Hide node_modules command: '$(HideFolder)'"/>
<Exec Command="$(HideFolder)">

コマンドのexitcodeはattrib、少なくとも私のテストでは常にゼロであるため、コマンドが正常に実行されたかどうかを確認するためにそれをチェックすることは意味がありません。

前のmsbuild例では、非表示にするフォルダーは"$(PackageJsonFolder)\node_modules"、プロパティがファイルがPackageJsonFolderあるフォルダーの名前であり、したがって作成される場所であるためです。packages.jsonnode_modules

その他の場合は、次のように、プロジェクトの場所を基準にしてフォルダーをいつでも指定できます。

<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>

前の例と同じライムを使用してコマンドを実行します。

于 2018-04-09T14:56:13.433 に答える