删除对Web项目中已删除文件的VS2010引用

时间:2012-02-06 20:13:20

标签: visual-studio visual-studio-2010

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

6 个答案:

答案 0 :(得分:2)

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

保存项目,你很高兴。

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

答案 1 :(得分:2)

我刚刚在VS 2015中遇到了这个问题。整个网络项目都缺少文件,因此不想全部查找。

回家的最快方式是:排除所有文件/文件夹然后再包括它们

那是:

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

答案 2 :(得分:2)

我已经创建了一个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

可以在此博客文章中找到更多信息:http://devslice.net/2017/06/remove-missing-references-visual-studio/

答案 3 :(得分:0)

在2018年11月作答,因为像我这样的身体可能正面临这个问题。

问题:

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

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

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

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

解决方案:

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

点击刷新图标。

重新启动Visual Studio代码。

答案 4 :(得分:0)

在资源管理器中打开项目,找到扩展名为'.vcxproj'的文件,然后删除要从中删除的文件

答案 5 :(得分:-1)

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

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);
        }
    }
}

https://github.com/woodp/remove-missing-project-files