Visual studio 删除对web项目中已删除文件的VS2010引用
我在VS2010背后删除了一个图像文件夹中的一些图像,该文件夹被一个web项目作为内容引用。在解决方案导航器中,这些文件现在显示为黄色警告图标,表示找不到该文件。刷新文件夹无效。有没有办法告诉VS2010自动同步文件夹?VS网站项目默认情况下会执行此操作 在Visual Studio中,转到缺少的文件,选择它们并按Visual studio 删除对web项目中已删除文件的VS2010引用,visual-studio,visual-studio-2010,Visual Studio,Visual Studio 2010,我在VS2010背后删除了一个图像文件夹中的一些图像,该文件夹被一个web项目作为内容引用。在解决方案导航器中,这些文件现在显示为黄色警告图标,表示找不到该文件。刷新文件夹无效。有没有办法告诉VS2010自动同步文件夹?VS网站项目默认情况下会执行此操作 在Visual Studio中,转到缺少的文件,选择它们并按del(或右键单击并选择Delete) 保存项目,你就可以开始了 正如您所指出的,这不是自动的-项目文件需要与实际的文件系统同步。网站“项目”不会出现这种情况,因为没有项目文件。我在V
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中(不确定旧版本)在您的项目树上方有一个搜索栏,您可以使用该搜索栏进行筛选,然后多选并点击删除一次。虽然这仅在您需要删除的所有文件名称相似时才起作用。请注意,这种方法的缺点是,您还将包括您以前明确排除的文件。这很好,但不需要考虑到“