Я думаю, что ответ @Zach Bonham решает немного другую проблему.Я не знал, что существует существует ограничение на статические функции, которые я могу использовать, и File.Exists включено, но Directory.Exists не включено.Таким образом, существует необходимость использовать пользовательское задание, подобное предложенному @Zach Bonham.
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
InitialTargets="SetLocation"
>
<UsingTask
TaskName="IsDirectoryExists"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Exists ParameterType="System.Boolean" Output="true" />
<DirectoryPath Required="true" ParameterType="System.String" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
Exists = System.IO.Directory.Exists(DirectoryPath);
</Code>
</Task>
</UsingTask>
<PropertyGroup>
<NetworkLocation>\\192.168.1.1\some\path</NetworkLocation>
<DefaultNetworkLocation>\\127.0.0.1\default\location</DefaultNetworkLocation>
</PropertyGroup>
<Target Name="SetLocation">
<IsDirectoryExists DirectoryPath="$(NetworkLocation)">
<Output PropertyName="NetworkLocationExists" TaskParameter="Exists" />
</IsDirectoryExists>
<PropertyGroup>
<UseLocation Condition="'$(NetworkLocationExists)'=='true'">$(NetworkLocation)</UseLocation>
<UseLocation Condition="'$(UseLocation)'==''">$(DefaultNetworkLocation)</UseLocation>
</PropertyGroup>
<Message Text="NetworkLocationExists: $(NetworkLocationExists)" />
<Message Text="UseLocation: $(UseLocation)" />
</Target>