Visual studio 删除对web项目中已删除文件的VS2010引用

Visual studio 删除对web项目中已删除文件的VS2010引用,visual-studio,visual-studio-2010,Visual Studio,Visual Studio 2010,我在VS2010背后删除了一个图像文件夹中的一些图像,该文件夹被一个web项目作为内容引用。在解决方案导航器中,这些文件现在显示为黄色警告图标,表示找不到该文件。刷新文件夹无效。有没有办法告诉VS2010自动同步文件夹?VS网站项目默认情况下会执行此操作 在Visual Studio中,转到缺少的文件,选择它们并按del(或右键单击并选择Delete) 保存项目,你就可以开始了 正如您所指出的,这不是自动的-项目文件需要与实际的文件系统同步。网站“项目”不会出现这种情况,因为没有项目文件。我在V

我在VS2010背后删除了一个图像文件夹中的一些图像,该文件夹被一个web项目作为内容引用。在解决方案导航器中,这些文件现在显示为黄色警告图标,表示找不到该文件。刷新文件夹无效。有没有办法告诉VS2010自动同步文件夹?VS网站项目默认情况下会执行此操作

在Visual Studio中,转到缺少的文件,选择它们并按
del
(或右键单击并选择
Delete

保存项目,你就可以开始了


正如您所指出的,这不是自动的-项目文件需要与实际的文件系统同步。网站“项目”不会出现这种情况,因为没有项目文件。

我在VS 2015中遇到了这个问题。整个web项目都缺少文件,所以不想去寻找它们

回家的最快方法是:排除所有文件/文件夹,然后再次包含它们

即:

  • 解决方案资源管理器->选择所有文件和文件夹->右键单击->从项目中排除
  • 解决方案资源管理器->单击“显示所有文件”
  • 解决方案资源管理器->选择所有文件和文件夹->右键单击->包括在项目中

  • 我已经创建了一个PowerShell脚本来处理这个问题

    function ExtractInclude ($line)
    {
        if ($line  -like  '*Content Include=*') {
            return $line.Split('"') | select -Skip 1 | select -First 1
        }
    }
    
    function RemoveMissingInclude ([string]$path, [bool]$report) {
        $reader = [System.IO.File]::OpenText($path)
        $projectPath = (Split-Path $path) + "/"
    
        try {
            for() {
                $line = $reader.ReadLine()
                if ($line -eq $null) { break }
    
                $pathInclude = ExtractInclude($line)
    
                if ($report) {
                    if ($pathInclude -ne "") {
                        if (-not (Test-Path "$projectPath$pathInclude")) { $pathInclude }
                    } 
                } else {
                    if ($pathInclude -ne "") {
                        if (Test-Path "$projectPath$pathInclude") { $line }
                    } else {
                        $line
                    }
               }
            }
        }
        finally {
            $reader.Close()
        }
    }
    
    只需运行以下操作即可创建已清理的项目文件:

    RemoveMissingInclude -path "D:\path\name.csproj" | Out-File D:\path\nameClean.csproj
    

    更多信息可以在这篇博文中找到:

    我为此制作了一个非常简单的控制台应用程序:

    using System;
    using System.IO;
    using System.Collections.Generic;
    
    namespace CleanProject
    {
        class Program
        {
            static void Main(string[] args)
            {
                var newFile = new List<string>();
                if (args.Length == 0)
                {
                    Console.WriteLine("Please specify the project full path as an argument");
                    return;
                }
    
                var projFile = args[0];
                if (!File.Exists(projFile))
                {
                    Console.WriteLine("The specified project file does not exist: {0}", projFile);
                    return;
                }
    
                if (!projFile.ToLowerInvariant().EndsWith(".csproj"))
                {
                    Console.WriteLine("The specified does not seem to be a project file: {0}", projFile);
                    return;
                }
    
                Console.WriteLine("Started removing missing files from project:", projFile);
    
                var newProjFile = Path.Combine(Path.GetDirectoryName(projFile), Path.GetFileNameWithoutExtension(projFile) + ".Clean.csproj");
                var lines = File.ReadAllLines(projFile);
                var projectPath = Path.GetDirectoryName(projFile);
                for(var i = 0; i < lines.Length; i++)
                {
                    var line = lines[i];
                    if (!line.Contains("<Content Include=\"") && !line.Contains("<None Include=\""))
                    {
                        newFile.Add(line);
                    }
                    else
                    {
                        var start = line.IndexOf("Include=\"") + "Include=\"".Length;
                        var end = line.LastIndexOf("\"");
                        var path = line.Substring(start, end - start);
                        if (File.Exists(Path.Combine(projectPath, path)))
                        {
                            newFile.Add(line);
                        }
                        else
                        {
                            if (!line.EndsWith("/>")) // I'm assuming it's only one line inside the tag
                                i += 2;
                        }
                    }
                }
                File.WriteAllLines(newProjFile, newFile);
    
                Console.WriteLine("Finished removing missing files from project.");
                Console.WriteLine("Cleaned project file: {0}", newProjFile);
            }
        }
    }
    
    使用系统;
    使用System.IO;
    使用System.Collections.Generic;
    命名空间清理项目
    {
    班级计划
    {
    静态void Main(字符串[]参数)
    {
    var newFile=newlist();
    如果(args.Length==0)
    {
    WriteLine(“请指定项目完整路径作为参数”);
    返回;
    }
    var projFile=args[0];
    如果(!File.Exists(projFile))
    {
    WriteLine(“指定的项目文件不存在:{0}”,projFile);
    返回;
    }
    如果(!projFile.ToLowerInvariant().EndsWith(“.csproj”))
    {
    WriteLine(“指定的文件似乎不是项目文件:{0}”,projFile);
    返回;
    }
    WriteLine(“已开始从项目中删除丢失的文件:”,projFile);
    var newProjFile=Path.Combine(Path.GetDirectoryName(projFile),Path.getfilenamwithoutextension(projFile)+“.Clean.csproj”);
    var lines=File.ReadAllLines(projFile);
    var projectPath=Path.GetDirectoryName(projFile);
    对于(变量i=0;i如果(!line.Contains(“在2018年11月回答,因为像我这样的人可能会面临这个问题

    问题:

    我已经备份了项目中的一些文件夹

    由于文件是原始文件的副本,因此引用了函数定义

    现在,当我试图从函数调用中打开函数定义时,备份文件夹中的函数定义正在打开

    删除备份文件夹后,会显示错误:
    xyz.php
    未找到文件,请创建一个

    解决方案:

    转到资源管理器中的文件夹

    点击刷新图标


    重新启动Visual Studio代码。

    在资源管理器中打开project,找到扩展名为“.vcxproj”的文件,然后删除要从中删除的文件,然后就可以开始了。

    行为上的差异是由于Web应用程序项目使用基于MSBuild的项目系统来确定包含哪些文件(并在.csproj/.vbproj中列出),而网站项目只是查看文件系统。您可以构建项目,然后获得丢失文件的列表。根据此列表,您可以检测丢失的文件并将其删除。我希望不必这样做,但这就是生活。我希望不必这样做,但这是活的,不幸的是,在新的Visual s中也是活的tudio 2013。下次:始终从项目/解决方案中删除,而不是直接在文件资源管理器中删除…在vs 2015中(不确定旧版本)在您的项目树上方有一个搜索栏,您可以使用该搜索栏进行筛选,然后多选并点击删除一次。虽然这仅在您需要删除的所有文件名称相似时才起作用。请注意,这种方法的缺点是,您还将包括您以前明确排除的文件。这很好,但不需要考虑到“