【发布时间】:2013-09-28 14:45:33
【问题描述】:
每次我必须将一个文件作为链接链接到一个 ASP.NET 项目中时,总会有一些我忘记做的事情,因为 Visual Studio 的错误太多,而且对这些很烦人。 它存在一个错误/限制,因此它不会将文件复制到 Debug 输出文件夹中,我们必须更改文件的属性以便它也被复制到 Publish 输出文件夹中。
经过大量研究,我以艰难的方式学会了这一点,并创建了一个 AfterBuild 目标来帮助简化此过程。但是,在添加文件时仍然需要做一些手动工作。
这是我维护的一个项目的示例。假设我们要在 ASP.NET 项目的“utilities”文件夹中添加文件 YIUCARD。
1) 右键单击 Visual Studio 上的“utilities”文件夹,然后选择“Add -> Existing item”。
2) 选择要添加的文件,单击一次(不要双击)。
3) 单击“添加”按钮旁边的箭头并选择“添加为链接”。
目前,这将无济于事。该文件不会被复制到任何文件夹(调试和发布)。它只是添加到项目中。
4) 右键单击文件并打开属性。
5) 改变: “构建行动”到“内容” “复制到输出目录”改为“始终复制”
此时,文件将被复制到发布输出文件夹(我们在发布时定义的任何位置)。 但是,当我们在本地调试时(F5),它不会工作,因为该文件没有复制到代码库的本地“实用程序”文件夹中。
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 文件夹!
但是,我想知道是否有任何更简单/直观的方法可以做到这一点。
您可能会说,可以通过将 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 中得到修复/改进?
【问题讨论】:
标签: c# asp.net visual-studio