2010-09-15 67 views
2

我在VS2010 DB项目,表示我在我的构建路径太多charachters得到一个错误。如何更改VS2010中的构建文件夹?

我如何可以更改所有项目类型我的默认生成路径?

喜欢的东西

c:\build\$(projectname)\...... 

谢谢!

编辑: 我已经将我的项目移动到C:驱动器的根目录,并且仍然在我的数据库项目中出现错误。当我尝试右键单击项目并选择属性

发生错误试图加载项目属性窗口,我得到这个错误。关闭窗口并重试。 无法评估项目元数据“%(FullPath)”。项目元数据“%(FullPath)”不能应用于路径“obj \ Debug |任何CPU \ TASS.DB.dbschema”。路径中的非法字符。 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets

+0

我卸载了VS2010并删除了所有的扩展。问题现在已经解决。我认为我使用的扩展名导致了这个问题,我将尝试找出哪一个,并在此处发布 – littlechris 2010-10-04 19:09:10

+0

您不明白错误消息。问题不在于“我的构建路径中有太多的角色”。问题是路径“obj \ Debug |任何CPU \ TASS.DB.dbschema”中的一个无效字符,显然它是管道字符。 – Elmue 2015-11-21 10:50:28

+0

@Elmue哈,的确,问题显然是管道角色。事实上,这些信息清楚地表明了我五年前的原始答案。 – bwerks 2015-11-23 23:31:58

回答

4

是跳出来我这里要说的是你的平台和配置被融合在一起形成“调试的第一件事|任何CPU”和一个字符串正在从制造 - 管道为它的引用那里时,它说,有非法字符的字符。我不确定您的数据库项目在调试/发布和体系结构方面的真正差异,但您甚至可能不需要将它们包含在路径中。

由于无法打开该项目的属性页,你就需要直接通过卸载它,然后从上下文菜单中选择“编辑...”编辑的MSBuild(对不起,如果你已经知道了)。

从那里,假设你realling窗户上的路径长度上限跑起来,你可以使用一些挂羊头卖狗肉的MSBuild最大限度地在那里你的空间。具体来说,做一些类似于你的建议的地方:尽可能使用C:\驱动器。

要做到这一点,期待与您的配置&平台配置的条件PropertyGroups内,并在其内部更换OutputPath和IntermediateOutputPath属性,使他们尽可能短,例如:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
    <OutputPath>$(SystemDrive)\D\A</OutputPath> 
    <IntermediateOutputPath>$(SystemDrive)\o\D\A</IntermediateOutputPath> 
</PropertyGroup> 
  • 这是不是“调试”你用“d”,“A”为“AnyCPU”和“o”的“目标文件”节省一些宝贵的字符。
  • 也许最重要的是你使用的是C:\ o \的中间构建目录,而不是C:\什么最全路径是到您的项目文件\ OBJ。同样,从属性页面,我记得这个属性是不可配置的。
  • 使用,而不是硬编码Ç系统驱动一些额外的灵活性有:,并不是说我真的希望它是不同的。

最后,关于你的属性页面加载问题,我不知道Debug | AnyCPU是如何得到你的路径的(我不知道任何存储类似串接风格的属性),但你应该一旦打开文件,就可以很容易地挑出它。希望它类似于像Winforms设计器那样加载错误,在那里你改变了一行,突然间整个事情再次运行。

希望这会有所帮助!

+0

感谢这一点,但不幸的是没有什么区别。我相信它与我的一个扩展有关。我要测试这个,如果我发现问题,我会编辑我的位置。我感谢你的帖子。写得好,容易遵循:) – littlechris 2010-10-04 19:10:34

+0

感谢您的批评!对不起,这并没有为你完成。我想它一定是数据库项目文件的东西。如果不涉及面向知识产权的风险,我很乐意审视你的观点。我很快成为一个msbuild吸毒者;) – bwerks 2010-10-04 22:11:26

+0

感谢Bwerks。我想我找到了问题扩展。我为T4编辑下载的一套“有形的”扩展...不太确定他们为什么会这样做,但我不再需要它们,所以我不会重新安装。你的文章并没有解决我的问题,但它确实允许我更改构建文件夹 - 所以我的第一个Q正确答案! :) – littlechris 2010-10-05 08:01:07

1

我不认为有可能为所有项目设置默认构建路径,只有标准的Debug/Release文件夹该项目本身。我唯一的建议是简单地将项目文件夹移动到路径较短的位置。

编辑:根据新的编辑,看看这里:

http://connect.microsoft.com/VisualStudio/feedback/details/594333/database-project-template-files-corrupt

+0

谢谢djfrear。我试过这个,但仍然在我的数据库项目中出现同样的错误。我编辑了我的问题 – littlechris 2010-09-17 08:26:06

+0

编辑了我的答案 – 2010-09-17 09:13:29

+0

与其他人相同:您不明白错误消息。 – Elmue 2015-11-21 11:12:57

0

我更新了一个项目从VS 2005到VS 2010,并得到相同的错误消息。 “ ”项目元数据“%(Filename)”不能应用于路径“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文件并查找管道字符,然后查找尝试和错误的如何修改它。该错误甚至可能出现在其他条件下,而不是转换项目。

但他们都有一个共同特点是什么,这是一个Visual Studio的错误(或“littlechris”软件扩展程序错误的情况下),它试图管​​道字符嵌入的路径。

XML node: "Debug|x86" -> path "...\obj\Debug|x86\..." 
0

我收到了这个消息,因为我的项目中的一个文件的绝对路径超过了260个字符。一旦我缩短了路径长度,我就能够建立这个项目。

相关问题