ファイルをリンクとして ASP.NET プロジェクトにリンクする必要があるたびに、忘れがちなことがあります。これは、Visual Studio があまりにもバグが多く、これらに煩わしいためです。これにはバグ/制限があるため、ファイルが Debug 出力フォルダーにコピーされません。ファイルのプロパティを変更して、Publish 出力フォルダーにもコピーされるようにする必要があります。
多くの調査の後、私はこれを難しい方法で学び、このプロセスを簡単にするのに役立つ AfterBuild ターゲットを作成しました。ただし、ファイルを追加する際には、まだ手作業が必要です。
これは私が管理しているプロジェクトの例です。ASP.NET プロジェクトの「utilities」フォルダにファイル YUUCARD を追加するとします。
1) Visual Studio の「utilities」フォルダを右クリックし、「追加 -> 既存の項目」を選択します。
2) 追加するファイルを 1 回クリックして選択します (ダブルクリックしないでください)。
3) [追加] ボタンの横にある矢印をクリックし、[リンクとして追加] を選択します。
現時点では、これは何もしません。ファイルはどのフォルダーにもコピーされません (Debug および Publish)。プロジェクトに追加されるだけです。
4) ファイルを右クリックし、[プロパティ] を開きます。
5) 変更: 「ビルド アクション」を「コンテンツ」に、「出力ディレクトリにコピー」を「常にコピー」に</p>
この時点で、ファイルは発行出力フォルダー (発行時に定義した任意の場所) にコピーされます。ただし、ローカルでデバッグすると (F5)、コードベースのローカルの「utilities」フォルダーにファイルがコピーされないため、機能しません。
6) [すべて保存] を選択して、Visual Studio で変更を保存します。これは、「.csproj」ファイルに変更を加えたときに保存され、手動で編集するためです。
7) Notepad++ で「.csproj」を開きます。
8)ファイルを「BeforeBuild」イベントに追加します(これが私のものです):
<Target Name="BeforeBuild">
<ItemGroup>
<UtilitiesFiles Include="..\path\to\file\REDOPXX.NEW" />
<UtilitiesFiles Include="..\path\to\file\REDFMTST" />
<UtilitiesFiles Include="..\path\to\file\JOBCARD" />
<UtilitiesFiles Include="..\path\to\file\YIUCARD" />
</ItemGroup>
<Copy SourceFiles="@(UtilitiesFiles)" DestinationFolder=".\utilities" SkipUnchangedFiles="true" />
</Target>
9) プロジェクトを自動的に発行するリリース モード用の "AfterBuild" イベントがあるため、ファイルは必要な出力フォルダーに直接移動します。
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
<PropertyGroup>
<OutputDir>..\path\to\publish\MyProject</OutputDir>
</PropertyGroup>
<Message Importance="High" Text="Output DIR: $(OutputDir)" />
<RemoveDir Directories="$(OutputDir)" ContinueOnError="true" />
<MSBuild Projects="MyProject.csproj" Properties="Configuration=$(Configuration);WebProjectOutputDir=$(OutputDir);OutDir=$(OutputDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
</Target>
10) Notepad++ でファイルを保存し、Visual Studio で再読み込みします。
プロジェクトをビルドすると、ファイルは Debug フォルダーと Release/Publish フォルダーの両方にコピーされます。
ただし、これを行うためのより簡単で直感的な方法があるかどうかを知りたいです。
これは、デバッグ出力フォルダーを Release/Publish フォルダーと同じフォルダーに変更することで修正されると言うかもしれません。これにより、最初に発行した後にファイルが存在するようになります。ただし、これにもバグがあることに注意してください。"bin\" 以外の出力フォルダーを使用すると、aspx ファイルでアセンブリが見つからないというエラーが表示されます。「出力ディレクトリにコピー」を「常にコピー」に設定しても、「Global.asax.cs」が見つからないというエラーが表示されます。
次の関連する質問を参照してください。
パーサー エラー メッセージ: タイプ 'TestMvcApplication.MvcApplication' を読み込めませんでした
「タイプ [Namespace].Global を読み込めませんでした」が私を悲しませる
これは Visual Studio の新しいバージョンで修正/改善されていますか?