Bağlantılı dosyaların sanal konuma kopyalanmasıyla ilgili büyük bir sorun var: Bağlantılı dosyalardan birine işaret eden bir JavaScript referansında Tanıma Git (Shift + F2) kullanırsanız, yerel olarak alınacaktır. kopyalanan dosya, dosyaya DEĞİL. Ardından, yerel sürümü düzenleme hatası yapmak zorundasınız, böylece bağlantılı dosyaları kullanmanın yararlarını ortadan kaldırırsınız. Ayrıca, bu Intellisense ile sorunlara neden olabilir.
Daha iyi bir çözüm: Bağlantılı dosyaları ilgili bağlantıların yanında ilişkili proje dizinine kopyalamak yerine, bu dizinin içindeki bir "hiddenDebug" klasörüne kopyalayın (veya istediğiniz dizini saklayın; yönetmek daha kolay ve daha sonra aşağıda açıklayacağım gibi hata ayıklama sırasında yolları işlemek için).
İşte "hiddenDebug" klasörüne paylaşılan deposundan dosyaları kopyalamak için nasıl (kaynak projenin Sonrası Yapı etkinliğe eklenecek):
Tek CSS Dosyası
xcopy/Y "$ (ProjectDir) App_Themes \ THEME1 \ Shared.css" "$ (SolutionDir) WebApp \ App_Themes \ THEME1 \ hiddenDebug \"
JavaScript dizinine
xcopy/Y/S "$ (ProjectDir) Scripts" "$ (SolutionDir) WebApp \ Scripts \ Paylaşılan \ hiddenDebug \"
Hata ayıklama yaparken, paylaşılan dosyaları 'Kaynak yollarını Yanıt kullanarak dinamik olarak değiştirebilirsiniz. Global.asax'ta filtreleyin. İşte bir örnek: (Paylaşılan projede)
Tepki Filtre Sınıfı
Imports System.IO
Namespace Code
Public Class LinkedReferencesFilter
Inherits MemoryStream
Private ReadOnly outputStream As Stream = Nothing
Private ReadOnly _IsDevEnvironment As Boolean = False
Public Sub New(ByVal output As Stream, IsDevEnvironment As Boolean)
Me.outputStream = output
Me._IsDevEnvironment = IsDevEnvironment
End Sub
Public Overrides Sub Write(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer)
' Convert the content in buffer to a string
Dim contentInBuffer As String = UTF8Encoding.UTF8.GetString(buffer)
If Me._IsDevEnvironment Then
contentInBuffer = contentInBuffer.Replace("<script src=""Scripts/Shared/", "<script src=""Scripts/Shared/hiddenDebug/")
contentInBuffer = contentInBuffer.Replace("/Scripts/Shared/", "/Scripts/Shared/hiddenDebug/")
contentInBuffer = contentInBuffer.Replace("/App_Themes/Theme1/Shared.css", "/App_Themes/Theme1/hiddenDebug/Shared.css")
End If
Me.outputStream.Write(UTF8Encoding.UTF8.GetBytes(contentInBuffer), offset, UTF8Encoding.UTF8.GetByteCount(contentInBuffer))
End Sub
End Class
End Namespace
Global.asax
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' Simulate internet latency on local browsing
If Request.IsLocal Then
System.Threading.Thread.Sleep(50)
End If
Dim currentRelativePath As String = Request.AppRelativeCurrentExecutionFilePath
If request__1.HttpMethod = "GET" Then
If currentRelativePath.EndsWith(".aspx") Then
Dim IsDevEnvironment As Boolean = False
//Use whatever method you want to determine whether your current environment is a development environment:
#If CONFIG = "Develop" Then
IsDevEnvironment = True
#End If
Response.Filter =
New Shared.Code.LinkedReferencesFilter(
output:=Response.Filter,
IsDevEnvironment:=IsDevEnvironment)
End If
End If
End Sub
Giderme: boşaltma ve bağlantılı öğeleri ile projeyi tekrar yüklemeyi deneyin. Bu yardımcı olmazsa, projenize hiddenDebug dizinini ekleyin. Bunu yapmak zorundaydım, ancak daha sonra onu kaldırabiliyordum. Bu çok titiz ... Microsoft bu özelliği cilalamış olsa iyi olurdu, ama şimdilik belirledim.
Bilmiyorsanız: web uygulamanızı yayınladığınızda, kaynak (bağlanan) dosyalar otomatik olarak yayınlama hedefine kopyalanır. Bu ayarlandıktan sonra, bunu unutabilirsiniz. En iyi yanı, Intellisense veya hızlı navigasyon kaybetmeyeceksiniz.
TypeScript'e geçiş yaptıktan sonra, çoğu JavaScript dosya referansı zorlukları basitleştirilecek veya ortadan kaldırılacaktır (diğer yönetilen .NET dillerinde kullanılabilenler gibi kolay proje karşılaştırması yapmayı umuyorum, ancak bu tür etkinlikleri etkinleştirmek için bazı geçici çözümler olabilir. işlevi).
Lütfen bunun sizin için uygun olup olmadığını veya daha iyi bir yolunuz olup olmadığını bildirin.
içerecektir sizin .proj dosyanın sonuna aşağıdaki yapıştırarak çözülebilir? Sanırım tam anlamıyla bir yol buysa, yerel olarak bununla başa çıkamayacağınız bu olurdu. – IyaTaisho
@lyaTaisho Doğru bir .NET stili bağlantı olarak kurulmuyor. "../../../SharedProjectFolder/css/style.css" benzeri bir temel göreli URL kullanır – Chattah
Aynı dosya yapısı ve tüm yerel kutunuzda? – IyaTaisho