2010-10-14 47 views
5

我剛剛遇到了VS2010和Script#的一個很奇怪的問題,大部分時間我都可以重新創建。腳本#和編譯器問題

在我的簡單場景中,我的解決方案中有2個項目;一個標準的Asp.Net MVC2 Web應用程序和一個Script#jQuery類庫。我使用靜態方法創建了一個靜態類(由[Imported]賦值),我的意圖是我可以將此類以代碼映射到外部Javascript庫,如文檔中所述。但是,似乎每當我用[IgnoreNamespace]裝飾這樣一個類來實現這個目標,項目就停止了編譯的成功,但是並沒有給我任何反饋,說明它爲什麼失敗(錯誤窗口中沒有錯誤,例如)。因爲Visual Studio似乎進入永久的不是構建失敗的狀態,所以擺脫這兩者並不容易,刪除類和項目文件不解決它,也不重新啓動Visual Studio。我可以讓VS成功構建項目的唯一方法是完全刪除項目,創建一個新項目然後重新添加文件,這至少令人討厭。

有了詳細的構建輸出設置,我得到如下:

目標文件 「AfterCompile」 「C:\ Program Files文件(x86)的\ ScriptSharp \ 1.0 \ ScriptSharp.targets」 從項目的「e :\ project \ local \ ScriptSharpDemo \ Scripts \ Scripts.csproj「(目標」編譯「取決於它): 任務」ScriptCompilerTask「 完成執行任務」ScriptCompilerTask「 - FAILED。 在項目「Scripts.csproj」中完成構建目標「AfterCompile」 - 失敗。

..它沒有告訴我很多。

有幾次我已經設法創建這種類,然後成功構建,但大多數情況下我可以很可靠地重現這個問題。

在這一點上,我傾向於認爲該錯誤在於Script#,但只是希望得到確認,並且如果有可能的話找到可能的解決辦法。

+0

你應該減少你想要導入的課程並將其發佈到這裏。 – 2010-10-14 17:43:23

+0

另外,你使用的是最新版本的編譯器?如果您尚未嘗試0.6.1.0,請嘗試。 – 2010-10-14 17:44:19

+1

感謝您的回覆。 我已經意識到,只有在嘗試向Script#項目中插入新類時選擇「添加類..」項,纔會發生此問題,而不是選擇「添加項」。然後選擇一個Script#類從那裏。只要您使用第一種方法添加類,它就會呈現項目不可用。 它確實有道理;我顯然必須使用正確的方法將項目添加到項目中。即使生成的文件看起來完全一樣,S#顯然知道它們之間的差異,並且不喜歡它。不幸的是,當你在該區域時很容易犯錯:( – 2010-10-14 19:44:38

回答

5

以防萬一任何人有類似的問題,我找到了問題的原因。

使用此方法添加類或從其他項目的文件中複製以在腳本#中使用時,會導致將對System.dll的引用添加到項目中。這(可以理解)導致項目停止編譯沒有錯誤。

如果對此有警告,或者Script#以某種方式檢測何時發生這種情況,並且/或者在使用「添加類」或導入文件時創建新模板,但這只是一個方便的問題,至少現在我可以毫不費力地讓我的項目再次編譯,只需刪除此參考。

+0

您應該將其標記爲答案 – 2011-11-05 22:11:54

1

當試圖再次讓我的項目建設,我碰到了下面就來,可能的解決方案:

  • 「家\ HomePage.cs」和「共享\ Utility.cs」不能刪除和保留它們最初創建的位置
  • 「Home \ HomePage.cs」和「Shared \ Utility.cs」必須是「* .csproj」文件中的最後一個條目。在他們之後,沒有「編譯」標籤應該遵循
  • 有問題的調用「腳本。文字」可能導致無聲失敗 - 有參數時尤其要小心(如Script.Literal("{0}.doFoo()", variable)
  • 同樣的似乎是真正的‘的String.Format’當格式參數無效
  • 命名空間和文件夾似乎引起許多問題,將所有類放入同一個命名空間,並將所有類放入同一個文件夾中可能會有所幫助
0

我嘗試了這裏給出的所有建議,但仍然看到問題,最終確定了原因情況是我爲我的一個屬性添加了[IntrinsicProperty]屬性,刪除它可以解決問題,不要問我爲什麼會導致問題,但我認爲我會分享這個解決方案,以防其他人遇到它。