2012-02-06 28 views
8

Tôi đã quay lại phía sau của VS2010 và xóa một số hình ảnh khỏi thư mục hình ảnh được tham chiếu bởi một dự án web dưới dạng Nội dung. Trong trình hướng dẫn giải pháp, các tệp này hiện hiển thị với biểu tượng cảnh báo màu vàng mà tệp không thể tìm thấy. Làm mới thư mục không có hiệu lực. Có cách nào để nói với VS2010 để tự động đồng bộ một thư mục? Dự án VS Website thực hiện điều này theo mặc định.Xóa tài liệu tham khảo VS2010 vào các tệp đã xóa trong dự án web

+1

Sự khác biệt về hành vi là do dự án Ứng dụng Web sử dụng hệ thống dự án dựa trên MSBuild để xác định tệp nào được bao gồm (và được liệt kê trong .csproj/.vbproj), trong khi dự án Web Site chỉ nhìn vào hệ thống tệp. – Jimmy

+0

Bạn có thể xây dựng dự án và sau đó bạn sẽ nhận được danh sách các tệp bị thiếu. Dựa trên danh sách này, bạn có thể phát hiện các tệp bị thiếu và xóa chúng. – starikovs

Trả lời

2

Trong Visual Studio, hãy chuyển đến các tệp bị thiếu, chọn chúng và nhấn del (hoặc nhấp chuột phải và chọn Delete).

Lưu dự án và bạn sẵn sàng sử dụng.

Như bạn đã lưu ý, đây không phải là tự động - tệp dự án cần được đồng bộ hóa với hệ thống tệp thực tế. Điều này không xảy ra với trang web "dự án" vì không có tệp dự án.

+0

Tôi đã hy vọng không phải làm điều đó, nhưng đó là cuộc sống. –

+0

Tôi đã hy vọng không phải làm điều đó, nhưng đó là sống, không may cũng trong Visual Studio 2013 mới. Tiếp theo thời gian: luôn luôn xóa từ dự án/giải pháp, và không trực tiếp trong các tập tin thám hiểm ... – Langeleppel

+1

trong vs 2015 (không chắc chắn về các phiên bản cũ) có một thanh tìm kiếm phía trên cây dự án của bạn mà bạn có thể sử dụng để lọc và sau đó chọn nhiều lần và nhấn xóa một lần. Mặc dù điều này chỉ hoạt động nếu tất cả các tệp bạn cần xóa tương tự có tên là – agradl

2

Tôi vừa gặp sự cố này trong VS 2015. Tệp bị thiếu trên toàn bộ dự án web, vì vậy không muốn tìm kiếm tất cả.

Cách nhanh nhất về nhà là: loại trừ tất cả tệp/thư mục sau đó bao gồm chúng tất cả lại.

Đó là:

  1. solution explorer -> chọn tất cả các file và thư mục -> nhấn chuột phải -> "Loại trừ từ Dự án"
  2. solution explorer -> bấm vào nút "Hiển thị tất cả Files"
  3. giải pháp thám hiểm -> chọn tất cả các tệp và thư mục -> nhấp chuột phải -> "Bao gồm trong Dự án"
+4

Lưu ý rằng nhược điểm của phương pháp này là bạn cũng sẽ bao gồm các tệp mà bạn đã loại trừ một cách rõ ràng trước đây. – Chris

1

Tôi đã tạo tập lệnh PowerShell để giải quyết vấn đề.

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

Chỉ cần chạy phần sau đây để tạo ra một dọn dẹp tập tin dự án:

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

thông tin bổ sung có thể được tìm thấy trong bài viết trên blog này: http://devslice.net/2017/06/remove-missing-references-visual-studio/

+0

điều này rất hay nhưng không tính đến rằng thẻ " Pedro

-1

tôi đã thực hiện một ứng dụng giao diện điều khiển rất đơn giản cho điều này :

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

Các vấn đề liên quan