Я думаю, что вы можете сделать следующее:
1) Создайте две сборки с именами Resources.ClientA
и Resources.ClientB
. Они должны иметь точно такой же контент (те же классы в тех же пространствах имен), но этот контент должен быть специфичным для клиента для соответствующих клиентов. Например, я добавил следующий класс только для иллюстрации:
// assembly for ClientA :
namespace Resources
{
public class Class1
{
public static string Text { get { return "Client A text"; } }
}
}
// assembly for ClientB :
namespace Resources
{
public class Class1
{
public static string Text { get { return "Client B text"; } }
}
}
2) Откройте ваш основной файл проекта (csproj) и добавьте:
<PropertyGroup>
<ClientToken>ClientA</ClientToken>
</PropertyGroup>
3) В том же файле ниже добавьте ссылку:
<ItemGroup>
<ProjectReference Include="..\Resources.$(ClientToken)\Resources.$(ClientToken).csproj">
<Name>Resources.$(ClientToken)</Name>
</ProjectReference>
</ItemGroup>
Теперь, заменив свойство ClientToken
, вы можете заменить клиентские сборки. Вы также сможете указать это свойство как часть процесса непрерывной интеграции, но, вероятно, вам нужно будет немного изменить свой файл csproj, чтобы он брал это свойство извне и только в том случае, если он не задан, установите некоторое значение по умолчанию. *
Также я не уверен в более простых способах выполнения вашей задачи, возможно, есть некоторые.