2013-08-01 22 views
24

好吧,這是不是一個編程錯誤更生成錯誤的。我從來沒有太多理由讓自己的雙手沾染身材,所以這個錯誤讓我感到困惑。

我曾嘗試使用Google這個錯誤很少結果,答覆要麼是不存在的,不可理解或不適用。

的錯誤是:

The "exists" function only accepts a scalar value, but its argument 
"$(PackageSourceManifest)" evaluates to "[same path];[same path]" which is not a 
scalar value. C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\ 
            v10.0\Web\Microsoft.Web.Publishing.targets 

無論如何,我挖成Microsoft.Web.Publishing.targets,我發現它的示數的線。我詳細地構建了我試圖查看是否可以找到任何可以修復的東西。

沒有。

我用Google搜索如何改變包源艙單,我特地在構建屬性,我已經尋找源清單,甚至東西,說:源清單,什麼都沒有。也許我看起來太辛苦,或者我只是不知道要尋找什麼。

就如何解決這一點,是什麼原因造成這種任何想法?

+0

'[相同的路徑] [相同的路徑]'的問題,只能有一個路徑。 –

+0

你可以得到什麼'$(PackageSourceManifest)'解決? – TheVillageIdiot

+0

最後,我剛剛創建了一個新項目。它現在編譯好了。我假設在Visual Studio版本和框架版本之間進行轉換,出現了一些問題。 – Madeline

回答

28

打開的.csproj文件,並查找任何重複的進口標籤

在我的情況下的.csproj有兩行是這樣的:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio 
\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 

刪除其中的一個固定的問題。

1

我覺得這發生在我身上時,我一個嘗試的Web發佈在VS2012的一個項目,最初是一個VS2010項目。因此,在VS2012中重新創建項目是一種治癒它的方法。 或者像@Giacomelli提到,刪除參考V10.0目標。需要注意的是V10.0 = VS2010v11.0 = VS2012

+0

或者您可以將路徑更新爲正確的版本,就像我一樣。 –

-1

我只是有同樣的問題,檢查我的.csproj文件,我發現沒有什麼錯,沒有重複的進口 - 什麼都沒有。

絆倒30分鐘後,我把它固定打開我的.csproj文件,並在重新排列標籤。

起初我對他們全部轉移到頂部,但得到了OutputPath沒有定義錯誤消息,然後我把所有的人都正下方在那裏他們被定義和一切工作。所有這些情況除外:

最有可能從文件的底部移動NuGet.targets是究竟固定它。我不知道,也不想浪費更多時間。

希望這可以幫助別人。

+1

對我來說,剛剛關閉,重新開放和重建該項目。 –

8

我有同樣的問題,由於不正確的導入$ MSBuildExtensionsPath32 $。很明顯,V10.0VS2010,而你在VS2012(V11.0)。

因此,改變你的進口:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" /> 

對於其他的,如果你有VS2013(V12.0),你可以把它改成:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" /> 

注:如果您像@giacomelli建議的那樣刪除此行,您將無法使用定義您的自定義目標文件。

從MSDN:MSBuildExtensionsPath32

http://msdn.microsoft.com/en-us/library/ms164309.aspx

在.NET Framework 4引入:有MSBuildExtensionsPath和MSBuildExtensionsPath32的 默認值之間沒有差異。 您可以變量MSBUILDLEGACYEXTENSIONSPATH設置環境的 非空值,以使在早期版本 MSBuildExtensionsPath的默認值的行爲。在.NET Framework 3.5 及更低版本中,MSBuildExtensionsPath的默認值指向\ Program Files \或\ Program Files(x86)文件夾下的MSBuild子文件夾的 路徑,具體取決於當前進程的位數。 例如,對於一個64位機器上的一個32位的過程中,此屬性 指向\程序文件(x86)文件夾。對於 64位機上的64位進程,這個屬性指向\ Program Files文件夾。不要 不包括這個屬性最終反斜槓。這個位置是把自定義的目標文件 有用的地方。例如,你的目標 文件可以在\程序 文件\的MSBuild \ MYFILES \ Northwind.targets通過使用此XML代碼安裝,然後在項目進口 文件:

12

曾在2012 VS同樣的問題 -

Error 48 04115: The "exists" function only accepts a scalar value, but its argument "@(_UnmanagedRegistrationCache)" evaluates to "obj\TheQueueData.sqlproj.UnmanagedRegistration.cache;obj\TheQueueData.sqlproj.UnmanagedRegistration.cache" which is not a scalar value. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets 1091 7 TheQueueData 

關閉並重新打開解決方案對我來說確實有竅門。

+2

這也適用於我。 – Jake

+0

爲我工作。謝謝! – Andrey

+0

2015 - 也爲我工作。刪除本地數據庫文件後,我開始得到這個問題 – workabyte

0

我在VS2013中得到了同樣的錯誤,但只有當我嘗試重建項目。在我的情況下,我如何解決這個問題,我希望這對其他人也有用。

配置:

  • 我在溶液中的單獨的項目我的打字稿文件。
  • 這些項目是爲遷移VS 2012

原因: 當我點擊在Microsoft.Web.Publishing.targets文件的錯誤,我發現,該項目使用這些文件的VS2012版本。那是僅部分從VS2012遷移到VS2013的項目。

解決方案: 打開打字稿項目(第一卸載項目) 搜索:

 <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> 
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
     </PropertyGroup> 
  • 註釋行VSToolsPath
  • 保存並關閉文件
  • 重新加載項目您可以從visual studio中看到一個遷移 屏幕,通知您項目已升級。

    重建項目,現在應該工作