Если вы используете Polymer и Firebase (полимерный огонь), см. этот ответ: https://stackoverflow.com/a/46698801/1821603
По существу вы создаете вторичный
для обработки новой регистрации пользователя, не затрагивая текущего пользователя.
Можно достигнуть того, что Вы хотите всего на нескольких шагах:
Задача получает параметр с местоположением заголовка.h файл, который Вы отослали. Это затем извлекает версию и поместило ту версию в заполнителя C#, регистрируют Вас, ранее создали. Или можно думать с помощью AssemblyInfo.cs, который обычно содержит версии, если это хорошо для Вас.
При необходимости в дополнительной информации, не стесняйтесь комментировать.
MSDN говорит нам:
#define директива не может использоваться для объявления постоянных величин, как обычно делается в C и C++. Константы в C# лучше всего определяются как статические члены класса или структуры. Если Вы имеете несколько таких констант, полагаете, что создание отдельного класса "Констант" содержит их.
Можно создать библиотеку с помощью управляемого С++, который включает класс - обертка вокруг констант. Затем можно сослаться на этот класс из проекта C#. Просто не забывайте использовать только для чтения <тип> вместо константы <тип> для Вашего объявления констант :)
Можно записать простой C++/C утилита, которые включают этот.h файл и динамично создают файл, который может использоваться в C#.
Эта утилита может быть выполнена как часть проекта C# как этап перед сборкой.
Таким образом, Вы всегда - синхронизация с исходным файлом.
Вы могли всегда использовать событие перед сборкой для выполнения препроцессора C на .cs файле и событии сборки сообщения для отмены шага перед сборкой. Препроцессор является просто системой текстовой замены, таким образом, это возможно:
// version header file
#define Version "1.01"
// C# code
#include "version.h"
// somewhere in a class
string version = Version;
и препроцессор генерирует:
// C# code
// somewhere in a class
string version = "1.01";
Я записал сценарий Python, который преобразовывает #define НЕЧТО "панель" во что-то применимое в C#, и я использую его на шаге перед сборкой в моем проекте C#.Работает.
# translate the #defines in messages.h file into consts in MessagesDotH.cs
import re
import os
import stat
def convert_h_to_cs(fin, fout):
for line in fin:
m = re.match(r"^#define (.*) \"(.*)\"", line)
if m != None:
if m.group() != None:
fout.write( "public const string " \
+ m.group(1) \
+ " = \"" \
+ m.group(2) \
+ "\";\n" )
if re.match(r"^//", line) != None:
fout.write(line)
fin = open ('..\common_cpp\messages.h')
fout = open ('..\user_setup\MessagesDotH.cs.tmp','w')
fout.write( 'using System;\n' )
fout.write( 'namespace xrisk { class MessagesDotH {\n' )
convert_h_to_cs(fin, fout)
fout.write( '}}' )
fout.close()
s1 = open('..\user_setup\MessagesDotH.cs.tmp').read()
s2 = open('..\user_setup\MessagesDotH.cs').read()
if s1 != s2:
os.chmod('..\user_setup\MessagesDotH.cs', stat.S_IWRITE)
print 'deleting old MessagesDotH.cs'
os.remove('..\user_setup\MessagesDotH.cs')
print 'remaming tmp to MessagesDotH.cs'
os.rename('..\user_setup\MessagesDotH.cs.tmp','..\user_setup\MessagesDotH.cs')
else:
print 'no differences. using same MessagesDotH.cs'