我在VS2010数据库项目中收到错误,表明我的构建路径中有太多的字符。
如何更改所有项目类型的默认构建路径?
像
这样的东西c:\build\$(projectname)\......
谢谢!
编辑: 我已经将我的项目移动到C:驱动器的根目录,我仍然得到了我的数据库项目的错误。当我尝试右键单击项目并选择属性
时,出现此错误尝试加载项目属性窗口时发生错误。关闭窗口,然后重试。 无法评估项元数据“%(FullPath)”。项元数据“%(FullPath)”不能应用于路径“obj \ Debug | Any CPU \ TASS.DB.dbschema”。路径中的非法字符。 C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets
答案 0 :(得分:4)
这里跳出来的第一件事就是你的平台和配置被融合在一起形成“Debug | Any CPU”并且正在创建一个字符串 - 管道是它在那里引用的字符说有非法字符。我不确定您的数据库项目在调试/发布和架构方面确实有多大差异,但您甚至可能不需要将它们包含在路径中。
由于您无法打开项目属性页面,因此您需要通过卸载它并从上下文菜单中选择“编辑...”来直接编辑msbuild(对不起,如果您已经知道这一点)。
从那里开始,假设你在windows路径长度上限运行,你可以使用一些msbuild技巧来最大化你的净空。具体来说,做一些类似于你建议的事情:尽可能使用C:\驱动器。
要执行此操作,请查看PropertyGroups,其中包含Configuration&的条件。平台配置及其内部替换OutputPath和IntermediateOutputPath属性,以便它们尽可能短,例如:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<OutputPath>$(SystemDrive)\D\A</OutputPath>
<IntermediateOutputPath>$(SystemDrive)\o\D\A</IntermediateOutputPath>
</PropertyGroup>
最后,关于你的属性页加载问题,我不知道Debug | AnyCPU如何在你的路径中得到(我不知道任何存储类似连接味道的属性),但你应该能够打开文件后,很容易就把它拿出来。希望它类似于winforms设计器中的加载错误,你改变了一行,突然整个事情再次起作用。
希望这有帮助!
答案 1 :(得分:1)
我认为不可能为所有项目设置默认构建路径,只有项目本身的标准Debug / Release文件夹。我唯一的建议就是将项目文件夹移动到路径较短的位置。
编辑:根据新编辑,请看一下:
答案 2 :(得分:0)
我将一个项目从VS 2005更新到VS 2010并得到了相同的错误消息。 “ 项目元数据”%(文件名)“无法应用于路径”obj \ Debug | x86 \ Debug \ DemoCSharp.pdb“。路径中的字符非法。 ”问题是Visual Studio 2010无法将csproj文件转换为新格式,但它并没有告诉我们错误的确切位置。
在我的VS 2005 csproj文件中,有以下XML代码:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">Debug|x86</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{05F88317-0CA7-4FE5-8520-35422402941A}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>DemoCSharp</RootNamespace>
<AssemblyName>DemoCSharp</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\output32\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\output32\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\output64\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>..\output64\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
Visual Studio不会告诉我们哪一行会产生问题。但我通过“尝试和错误”找到了它。
错误消息的原因显然是Visual Studio转换向导中的错误,因为VS 2005在加载此csproj文件时没有问题,而VS 2010无法转换它。
因此,您必须手动编辑并修复此文件,然后在VS2010中重新加载。
在我的情况下,触发错误的行是带有<Platform Condition
的3.行。错误是VS尝试获取此平台条件XML节点的值(“Debug | x86”)并将其嵌入到磁盘上的路径中(如“... \ obj \ Debug | x86”) \ ...“)。但由于管道字符在路径中是非法的,它稍后会抱怨并中止转换。
那么如何解决这个问题?
我只是替换了第三行
<Platform Condition=" '$(Platform)' == '' ">Debug|x86</Platform>
带
<Platform Condition=" '$(Platform)' == '' ">Debug</Platform>
它消除了管道字符和转换后的项目没有错误。
注意:也可以完全删除此行。
<强>注意:强> 在您的情况下,相同的错误消息可能需要另一个修复,而不是在我的情况下。请研究csproj文件并查找管道字符,然后找出try和error如何修改它。此错误甚至可以出现在转换项目之外的其他条件中。
但它们的共同之处在于,这是一个Visual Studio错误(或者在'littlechris'软件扩展错误的情况下)试图将管道字符嵌入到路径中。
XML node: "Debug|x86" -> path "...\obj\Debug|x86\..."
答案 3 :(得分:0)
我收到了这个messeage,因为我项目中某个文件的绝对路径超过了260个字符。一旦我减少了路径长度,我就能够构建项目。