2016-11-02 2 views
1

У меня есть проект C# под названием TestProduct.sln К сожалению, в зависимости от пользователя программа должна реагировать с разной точностью в одну точку. Как я могу сообщить программе, для которой пользователь скомпилирован? Должен ли я использовать DefineConstants при строительстве как:Как создать пользовательские сборки для разных пользователей с помощью MSBuild

msbuild /p:DefineConstants=USER1 TestProduct.sln 

и в моем коде:

#if USER1 
    // do something USER1 specific 
#endif 

Или я должен сделать что-то совершенно другое, чтобы разыскиваемого АРХИВ поведение?

Заранее за вашу помощь.

Редактировать: Извините за неправильное представление, я должен прояснить ситуацию. Пользователи были неправильной формулировкой, которую я должен был назвать ее клиентами. Клиент Foreach имеет командный файл, который запускает команду msbuild. И в команде msbuild я хочу указать встроенную двоичную систему, для которой клиент будет предоставлен.

+0

Вы можете использовать $ (USERNAME), чтобы прочитать переменную среды USERNAME. – duDE

+0

@Action Heinz, можете ли вы получить полезную информацию от предложений чувака и кристалло? Я согласен с ними, использование переменной среды будет хорошим путем для этой проблемы. Не та же проблема, но хорошая ссылка: http://stackoverflow.com/questions/11690574/is-there-a-way-to-make-user-specific-pre-post-build-events-in-visual- студия-проектируемый –

ответ

0

У меня была аналогичная проблема в прошлом, и я обратился к ней таким образом.

Я получаю имя пользователя, используя переменную среды $(USERNAME). Затем у меня есть несколько командных файлов с именем USERNAME.doit.bat, а в событии пост-сборки VS выполняется $(USERNAME).doit.bat. Таким образом, у каждого пользователя есть своя собственная файловая партия для пользовательских операций сборки сообщений.

Смежные вопросы