每次我必須將文件鏈接到ASP.NET項目中作爲鏈接時,總會有一些我忘記做的事,因爲Visual Studio太麻煩了,很煩人用這些。 它存在一個錯誤/限制,因此它不會將文件複製到調試輸出文件夾中,我們必須更改文件的屬性,以便將它複製到發佈輸出文件夾中。在Visual Studio中添加文件作爲鏈接 - 調試與發佈
經過大量的研究,我學到了這一點,並且創建了一個AfterBuild目標來幫助簡化這個過程。但是,添加文件時仍需要做一些手動工作。
這是我維護的項目的示例。假設我們要在ASP.NET項目的「utilities」文件夾中添加文件YIUCARD。
1)右鍵單擊Visual Studio上的「utilities」文件夾,然後選擇「Add - > Existing item」。
2)選擇要添加的文件,點擊它一次(不要雙擊)。
3)單擊旁邊的箭頭「添加」按鈕,然後選擇「添加鏈接」。
目前,這不會做任何事情。該文件不會被複制到任何文件夾(調試和發佈)。它只是添加到項目中。
4)右鍵單擊文件並打開屬性。
5)變化: 「建設行動」,以「內容」 「複製到輸出目錄」爲「始終複製」
此時,該文件將被複制到發佈輸出文件夾(我們在發佈時定義的任何地方)。 但是,當我們在本地調試(F5)時,它不會工作,因爲該文件未被複制到代碼庫上的本地「實用程序」文件夾中。
6)通過選擇「全部保存」在Visual Studio中保存更改。這是爲了保存「.csproj」文件,因爲我們對其進行了更改,現在我們將手動編輯它。
7)在記事本中打開「的.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 /發佈文件夾!
不過,我想知道是否有這樣做的任何容易/直觀的方式。
您可能會說這將通過將Debug輸出文件夾更改爲與Release/Publish文件夾相同來解決,以便在第一次發佈後這些文件就會存在。 但是,請注意,這也有一個錯誤。如果我使用「bin \」以外的輸出文件夾,則aspx文件會抱怨他們找不到組件。即使我將「複製到輸出目錄」設置爲「始終複製」,它也會抱怨找不到「Global.asax.cs」。
請參閱以下相關問題:
Parser Error Message: Could not load type 'TestMvcApplication.MvcApplication'
"Could not load type [Namespace].Global" causing me grief
這是固定/在Visual Studio的新版本改進?
嗨基思。這不是我正在描述的問題,但謝謝你的提示:) – Nuno