Mad*_*ine 26 c# .net-4.5 visual-studio-2012
好吧,这更多的是构建错误,而不是编程错误.我从来没有太多理由让我的手弄脏构建,所以这个错误令我感到困惑.
我尝试用谷歌搜索这个错误而得不到什么结果,答案要么不存在,要么不可理解或不适用.
错误是:
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
Run Code Online (Sandbox Code Playgroud)
无论如何,我挖到了Microsoft.Web.Publishing.targets,我找到了它出错的行.我有详细的建立在我试图看到的地方,如果我能找到任何可以解决的问题.
没有.
我已经google了如何更改Package Source Manifest,我已经查看了Build Properties,我已经搜索了一个源清单,甚至是搜索源清单的东西,没有.也许我看起来太难了,也许我只是不知道该找什么.
关于如何解决这个问题以及导致这个问题的任何想法?
gia*_*lli 29
打开.csproj文件并查找任何重复的导入标记.
在我的例子中,.csproj有两行,如下所示:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio
\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)
删除其中一个修复了问题.
Moi*_*ala 13
在VS 2012中遇到同样的问题 -
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
Run Code Online (Sandbox Code Playgroud)
关闭并重新打开解决方案对我来说很有用.
由于$ MSBuildExtensionsPath32 $导入不当,我遇到了同样的问题.很明显,v10.0适用于VS2010,而你使用的是VS2012(v11.0).
因此,将导入更改为:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)
对于其他,如果您有VS2013(v12.0),您可以将其更改为:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)
注意:如果您删除此行,如@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位进程,此属性指向\ Program Files(x86)文件夹.对于64位计算机上的64位进程,此属性指向\ Program Files文件夹.不要在此属性中包含最终反斜杠.此位置是放置自定义目标文件的有用位置.例如,您的目标文件可以安装在\ Program Files\MSBuild\MyFiles\Northwind.targets中,然后使用以下XML代码导入项目文件中:
| 归档时间: |
|
| 查看次数: |
8046 次 |
| 最近记录: |