2010-09-15 68 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個字符。一旦我縮短了路徑長度,我就能夠建立這個項目。

相關問題