asp.net – Visual Studio“添加为链接”调试时不工作

前端之家收集整理的这篇文章主要介绍了asp.net – Visual Studio“添加为链接”调试时不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Visual Studio 2010来维护大约40个不同的web应用程序,它们都部署在同一个网站上。这些项目在同一个解决方案中,但是它们位于不同的项目中,因为它们各有不同。

我正在尝试通过“添加链接”选项在各种项目之间共享css / js文件,以便我可以更新css或js文件一次,并自动将更新反映在各种项目中,而无需构建和重新部署每个项目。

我遇到的问题是当我试图在我的电脑上在本地运行一个项目以进行调试时,这些链接文件不起作用。我正在找到一个没有找到的文件

My Thought: I assume that this because the folder structure is different when running the applications locally. I’m curIoUs if there is a way to copy the files to the project only when building in debug mode and adjust the relative URLs accordingly so that I will be able to properly test the application before publishing to our web server.

谢谢,

解决方法

解决这个问题的办法是复制每个构建期间作为链接添加内容文件(如js,css或其他)。有几种方法可以做到这一点。我可以建议使用可以由不同的Web应用程序项目重用的MSBuild目标。

因此,您可以使用以下内容创建以下文件(例如,将其命名为WebApplication.Extension.targets):

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Override the default target dependencies to -->
    <!-- include the new CopyLinkedContentFiles target. -->
    <PropertyGroup>
        <BuildDependsOn>
            CopyLinkedContentFiles;
            $(BuildDependsOn);
        </BuildDependsOn>
    </PropertyGroup>

    <!--
    ============================================================
    CopyLinkedContentFiles

    A new target to copy any linked content files into the 
    web application output folder.

    NOTE: This is necessary even when '$(OutDir)' has not been redirected.
    ============================================================
    -->
    <Target Name="CopyLinkedContentFiles">
        <!-- Remove any old copies of the files -->
        <Delete Condition=" '%(Content.Link)' != '' AND Exists('$(WebProjectOutputDir)\%(Content.Link)') "
                Files="$(WebProjectOutputDir)\%(Content.Link)" />
        <!-- Copy linked content files recursively to the project folder -->
        <Copy Condition=" '%(Content.Link)' != '' " SourceFiles="%(Content.Identity)"
              DestinationFiles="$(WebProjectOutputDir)\%(Content.Link)" />
    </Target>
</Project>

然后通过在.csproj文件中放置以下行将此目标添加到Web应用程序项目中:

<Import Project="$(MSBuildProjectDirectory)[RelativePathToFile]\WebApplication.Extension.targets" />

基本上你可以在.csproj文件添加以下行:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

此问题后,内容文件添加链接应该被解决

编辑:
仅当在MSBUILD中内置调试配置时,才能执行以下逻辑,您可以指定Condition元素。

例如,只有为调试配置导入指定的目标,您可以将import语句更新为以下内容

<Import Project="$(MSBuildProjectDirectory)[RelativePathToFile]\WebApplication.Extension.targets" Condition=" '$(Configuration)' == 'Debug' "/>

编辑2:

为了克服这个问题,前段时间我创建了一个’MSBuild.WebApplication.CopyContentLinkedFiles‘nuget包。此程序包添加MsBuild目标,该目标在构建过程中将所有添加链接内容文件复制到项目文件夹。

猜你在找的asp.Net相关文章