我有一個包含WPF和Silverlight代碼的子項目組件的WPF解決方案。如果定義了「WPF」條件編譯符號,則會構建WPF代碼,如果未定義,則構建Silverlight代碼。這適用於我的調試版本。但是,當我嘗試執行發佈構建時,構建不檢測「WPF」符號,並且因爲它然後錯誤地編譯了silverlight代碼,我得到的構建不起作用。任何想法爲什麼WPF符號不被構建檢測到?爲什麼在發佈版本中不能檢測到條件編譯符號?
這裏是.csproj的相關部分。請注意,「調試」和「發佈」在DefineConstants中定義了「WPF」符號,但在發佈版本中未檢測到它。誰能幫忙?
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;WPF</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>1607</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;WPF</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
定義「不被檢測」 - 你應用了哪個預處理指令? – KMoraz 2012-03-07 14:57:00
@KMoraz預處理器指令(符號)通過項目屬性>構建選項卡>條件編譯符號字段應用;它存儲在DefineConstants標記的.csproj文件中,如上所示。據我瞭解,這與#define TRACE #define WPF等# – 2012-03-07 16:03:55
@KMoraz通過「未被檢測到」相同我的意思是我在代碼中有「#if WPF」語句,但是當它按預期的方式工作時,會生成發佈版本的構建就像WPF預處理器指令不存在一樣,從而將錯誤的代碼編譯到構建中 – 2012-03-07 16:14:20