在Visual Studio上添加文件作为链接 - 调试与发布

Nun*_*uno 39 c# asp.net visual-studio

每次我必须将一个文件作为链接链接到一个ASP.NET项目时,总会有一些我忘记做的事情,因为Visual Studio太过错误并且很烦人.它有一个错误/限制因此它不会将文件复制到Debug输出文件夹中,我们必须更改文件的属性,以便将其复制到Publish输出文件夹中.

经过大量研究后,我通过艰难的方式学到了这一点,并创建了一个AfterBuild目标,以帮助简化此过程.但是,添加文件时仍有一些手动工作要做.

这是我维护的项目的示例.假设我们要在ASP.NET项目的"utilities"文件夹中添加文件YIUCARD.

1)右键单击Visual Studio上的"utilities"文件夹,然后选择"添加 - >现有项".

步骤1

2)选择要添加的文件,单击它(不要双击).

第2步

3)单击"添加"按钮旁边的箭头,然后选择"添加为链接".

第3步

目前,这将无所作为.该文件不会被复制到任何文件夹(调试和发布).它刚刚添加到项目中.

4)在文件中单击鼠标右键,然后打开"属性".

第4步

5)更改:"构建操作"到"内容""复制到输出目录"到"始终复制"

第5步

此时,文件将被复制到Publish输出文件夹(我们在发布时定义的任何位置).但是,当我们在本地调试(F5)时,它将无法工作,因为该文件未复制到代码库上的本地"utilities"文件夹中.

6)选择"全部保存",在Visual Studio上保存更改.这样就可以保存".csproj"文件,因为我们对其进行了更改,现在我们将手动编辑它.

第6步

7)在Notepad ++中打开".csproj".

第7步

8)将文件添加到"BeforeBuild"事件(这是我的):

第8步

 <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>
Run Code Online (Sandbox Code Playgroud)

9)我有一个Release模式的"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>
Run Code Online (Sandbox Code Playgroud)

10)将文件保存在Notepad ++中并在Visual Studio上重新加载.

第10步

构建项目时,该文件将被复制到Debug和Release/Publish文件夹中!

但是,我想知道是否有更简单/直观的方法来做到这一点.

您可以说这可以通过将Debug输出文件夹更改为Release/Publish文件夹来修复,以便在我第一次发布后文件就在那里.但是,请注意,这也有一个错误.如果我使用"bin"以外的输出文件夹,aspx文件会抱怨他们找不到程序集.即使我将"复制到输出目录"设置为"始终复制",它也会抱怨无法找到"Global.asax.cs".

请看这些相关问题:

分析器错误消息:无法加载类型'TestMvcApplication.MvcApplication'

"无法加载类型[Namespace] .Global"让我感到悲伤

这是在较新版本的Visual Studio中修复/改进的吗?

Dej*_*jan 12

MSBuild.WebApplication.CopyContentLinkedFiles的NuGet可以帮助你.此程序包添加了一个MSBuild目标,该目标在构建期间将作为链接添加的所有内容文件复制到Web Application文件夹.


小智 0

如果目标是包含内容文件夹(例如脚本、图像),那么您不应该管理单个文件。相反,请将这些文件夹包含在您的构建和发布文件中。

当需要添加/删除文件时,只需在内容文件夹中更新它们即可。这本质上就是我们处理帮助文件的方式,因为它们不由开发人员管理。

查看这些链接:

有没有办法自动将内容文件包含到 asp.net 项目文件中?

使用 Visual Studio 进行 ASP.NET Web 部署:部署额外文件