小编Goo*_*ooo的帖子

构建软件补丁的好习惯是什么?

我最近负责一个软件产品,这个产品的发展相当无组织,我建立了一个新的项目结构,一个源代码库,问题跟踪和一个使用nant和teamcity的构建系统.我正处于对每个主要分支的每个提交进行编译,测试并构建到设置中的点.

总是建立和发布完整设置似乎是错误的我想建立某种自动补丁建设,但我不知道如何做到这一点.您有什么建议我可以做到这一点,或者我可以在哪里找到有关该主题的信息?谷歌到目前为止没有任何帮助.

关于我当前设置的更多细节:

存储库: - git: - 2个主要分支:开发和掌握

构建系统: - teamcity - 2个配置:一个用于构建每个分支 - 构建仅包含一个构建步骤: - nant runner:nant脚本是存储库的一部分,包含以下目标:clean,init,compile,test,deploy ,build_setup(使用inno设置)

我想我必须将nant脚本拆分成碎片并使用不同的构建步骤以某种方式将新构建工件与旧构建工件进行比较并创建包含更新文件的补丁.我是否在正确的轨道上,如果是这样,有没有人知道如何设置teamcity的好例子或教程.

c# nant teamcity patch build

10
推荐指数
1
解决办法
315
查看次数

在锁定的系统上渲染3D场景

我使用SlimDX在c#中编写了一个基于Direct3D 9的渲染引擎.在一个新项目中,我现在需要使用webservice分发加载的3d场景的图片.问题是,为了渲染任何东西,我需要一个Direct3d设备.有没有办法在没有用户登录系统且桌面未被锁定的情况下创建direct3d设备?

如果那是不可能的,有没有人知道一个变通方法?最后,我需要一个可执行文件,它可以使用一些本地用户帐户或服务从任务计划程序运行,该服务器定期从某些视点呈现场景的图片.

引擎分为两部分:引擎本身和渲染器.因此,如果没有其他方法,那么我也可以使用opengl或任何其他技术实现新的渲染器,这些技术允许渲染而不具有可见的形式.

编辑:

到目前为止我所拥有的是:

protected override void OnContinue() {
        base.OnContinue();

        NativeFunctions.SafeWindowStationHandle hwinsta = NativeFunctions.WindowStation.OpenWindowStation(
            "WinSta0", 
            true, 
            NativeFunctions.AccessMask.WINSTA_ALL_ACCESS);

        if(hwinsta == null || hwinsta.IsClosed || hwinsta.IsInvalid)
            Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());

        if(NativeFunctions.WindowStation.SetProcessWindowStation(hwinsta.DangerousGetHandle())) {
            NativeFunctions.SafeDesktopHandle ptrDesktop = NativeFunctions.WindowStation.OpenInputDesktop(
                0, 
                true, 
                NativeFunctions.AccessMask.DESKTOP_CREATEWINDOW);

            if(ptrDesktop.IsClosed || ptrDesktop.IsInvalid)
                return;

            if(!NativeFunctions.WindowStation.SetThreadDesktop(ptrDesktop.DangerousGetHandle()))
                return;

            Log log = Logger.Instance.CreateLog("DXService", true, true, false);

            log.LogMessage("Desktop set, creating D3D-Object.", LOGMESSAGELEVEL.CRITICAL, true);

            Direct3D direct3D = new Direct3D();
            log.LogMessage("Direct3D object created,  creating device.", LOGMESSAGELEVEL.CRITICAL, true);

            if(direct3D.AdapterCount == 0) {
                log.LogMessage("FATAL: direct3D.AdapterCount == 0");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是最小的WindowsService的一部分.我将重要的代码放入OnContinue函数中,因为它比启动代码更容易调试.我赋予此服务与活动桌面交互的权限.当我作为本地系统帐户运行服务时,桌面和windowstation工作但GraphicsAdapter的数量仍为0,当我使用专用用户帐户运行服务时,我甚至无法打开WindowStation.还有什么我可以尝试或我做错了吗?我在Windows 7机器上测试这个,而我登录,因为调试变得非常困难.这可能是个问题吗? …

c# opengl directx rendering

5
推荐指数
1
解决办法
447
查看次数

标签 统计

c# ×2

build ×1

directx ×1

nant ×1

opengl ×1

patch ×1

rendering ×1

teamcity ×1