Как сослаться на две версии API?

Я сделал похожий сценарий для отключения телевизора Roku моего ребенка, если он включен. Я буду держать это всю ночь, просто чтобы ребенок не смотрел телевизор ночью. (У нее есть TCL Roku TV). Если бы я рефакторинг кода для вашего использования, это выглядело бы примерно как

#import required libs
import keyboard
...
count = 0
while True:
    if ledBlue.off() = true
        sleep(1)
        count += 1
        if count == 10:
            run_py="sudo python3 project.py"
            os.system(run_py)
            time.sleep(2)
            restart_service="sudo restart service"
            os.system(restart_service)
            count = 0 
        elif keyboard.is_pressed('q'):
            break
        else:
            pass

, это немного глупо, но да, зная метод внутри ledBlue() может быть использован для оптимизации этого. Я добавил библиотечные библиотеки, потому что этот скрипт будет продолжать работать, так что вы сможете нажать «q», чтобы выйти из цикла.

вот мой оригинальный код:

    def DenyRemote(self):
        state = self.device_pw_state()
        while True:
            sleep(10)
            if state == "PowerOn":
                self.roku._post('/keypress/Power')
            elif keyboard.is_pressed('q'):
                break
            else:
                pass
7
задан Matt 13 November 2008 в 12:45
поделиться

2 ответа

Это - то, как я выложил.NET 1,1 версии, скомпилированные против WSSv2 API и.NET 2,0 скомпилированных против блока WSSv3. Это будет работать на VS 2005 и 2008.

Необходимо будет использовать http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee MSBEE

Работа с.NET 1.1 с Visual Studio 2008

Некоторые подсказки

Откройте *.csproj и узнайте, где на SharePoint dll ссылаются и изменение в чем-то вроде этого, что изменяет блок, на который ссылаются, в зависимости от Вашей цели (FX1_1 означает предназначение для.NET1.1 и поэтому WSSv2),

<Reference Include="Microsoft.SharePoint">
  <HintPath Condition="'$(TargetFX1_1)'!='true'">pathto\WSS3\Microsoft.SharePoint.dll</HintPath>
  <HintPath Condition="'$(TargetFX1_1)'=='true'">pathto\WSS2\Microsoft.SharePoint.dll</HintPath>
</Reference>

Используйте условную компиляцию для различий в случае необходимости

#if FX1_1  
    // WSSv2 specific code  
#else  
    // WSSv3 specific code  
#endif

Если Вы получаете ошибку компилятора, но код выглядит правильным, может случиться так, что ошибка только для.NET1.1 / WSSv2 и компилирует прекрасный в.NET2/WSSv3. Проверьте выходную вкладку для видения, какая цель ошибка произошла

Необходимо будет также освоить некоторые перемещения ниндзя MSBUILD, чтобы сохранить 1 процесс сборки шага и сохранить себя нормальным http://brennan.offwhite.net/blog/2006/11/30/7-steps-to-msbuild/ с помощью MSBUILD, можно заставить VS компилировать обе версии одновременно, не обращаясь к командной строке.

Это выполнит.NET1.1 компиляцию после того, как.NET закончила и произвела некоторые сообщения к Окну вывода, чтобы помочь Вам разработать, где ошибки произошли.

<Target Name="BeforeBuild">
    <Message Text="--- Building for .NET 1.1 ---" Importance="high" Condition="'$(TargetFX1_1)'=='true'" />
    <Message Text="--- Building for .NET 2.0 ---" Importance="high" Condition="'$(TargetFX1_1)'!='true'" />
</Target>
<Target Name="AfterBuild" Condition="'$(TargetFX1_1)'!='true'">
    <MSBuild Projects="$(MSBuildProjectFile)" Properties="TargetFX1_1=true;" />
</Target>
3
ответ дан 7 December 2019 в 12:26
поделиться

Вы могли дать "псевдоним экстерна" движение.

Это - одно из тех времен, когда позднее связывание VB (опция, строгая прочь) подход, работает хорошо. Список на C# 4.0 и dynamic.

Вы могли бы попытаться писать интерфейс для битов, в которых Вы нуждаетесь (в основной библиотеке) и пишете 2 dlls: одна ссылка на каждую версию sharepoint dll. Для обоих проектов реализуйте интерфейс (бросок NotSupportedException для битов Вы не можете сделать), и загрузите соответствующий dll во времени выполнения? (подход фабрики)

Просто попробуйте его отдельным методом, прежде чем Вы будете слишком поглощены... не делают всего этого, пока Вы не знаете, что это работает на самый простой из простых методов.

2
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: