2017-04-04 43 views
0

我在我的項目上使用不同資源(圖像)構建相同應用程序的自定義屬性。通過解決方案預設的項目文件上的自定義屬性

project.jsproj

<ItemGroup> 
    <Content Condition="$(Customization) == ''" Include="images\uwp\*.png" /> 
    <Content Condition="$(Customization) != ''" Include="images\$(Customization)\uwp\*.png" /> 
</ItemGroup> 

此通過的MSBuild正常工作:

msbuild project.jsproj /property:Configuration=Release;Platform=x64;Customization=theme_xy 

我的問題是,如果有預設上的VisualStudio解決這個自定義屬性的可能性,也將應用於那裏的構建。

例如:

一個)Solution1.sln embedds與定製屬性

b)中project.jsproj Solution2.sln embedds project.jsproj與定製屬性=「theme_xy

任何幫助表示讚賞 - 謝謝

回答

0

的解決方案名稱的分化解決了這個問題:

<PropertyGroup> 
    <Customization></Customization> 
</PropertyGroup> 

<PropertyGroup Condition="'$(SolutionName)' == 'Solution1'"> 
    <Customization>theme_xy</Customization> 
</PropertyGroup> 
1

如果有可能在VisualStudio上的解決方案上預設此自定義屬性,那麼該解決方案也將應用於構建。

答案是肯定的,但條件限制是,你不能在Solution1.sln和Solution2.sln使用相同的project.jsproj文件。您可以設置在project.jsproj文件的PropertyGroup在Solution1.sln:

<PropertyGroup> 
     <Customization></Customization> 
    </PropertyGroup> 
    <ItemGroup> 
     <Content Condition="$(Customization) == ''" Include="images\uwp\*.png" /> 
     <Content Condition="$(Customization) != ''" Include="images\$(Customization)\uwp\*.png" /> 
    </ItemGroup> 

這相當於改變solution1.sln的project.jsproj文件:

<ItemGroup> 
    <Content Include="images\uwp\*.png" /> 
    </ItemGroup> 

溶液2。 SLN,則需要變化project.jsproj文件

<PropertyGroup> 
    <Customization>theme_xy</Customization> 
    </PropertyGroup> 

但是如果你想使用相同的project1.jsproj在solution1.sln和solution2.sln中沒有任何其他額外的變化,你仍然需要爲PropertyGroup設置Condition,並且這個Condition需要從VS之外傳輸,比如命令行。在這種情況下,您不能在不同的解決方案中嵌入具有條件自定義屬性的相同project.jsproj。

<PropertyGroup Condition="$(Customization) == ''"> 
    <Customization></Customization> 
    </PropertyGroup> 
+0

感謝澄清事情:我想用同樣的project.jsproj兩個解決方案。基本上我的問題是如果有一種方法通過VS提供這種外部條件,但顯然這是不可能的。 – kerosene

+1

我認爲它應該是,我們無法通過VS本身提供這種外部條件。 –

+0

通過基於解決方案名稱設置屬性來解決它:' theme_xy kerosene

相關問題