使用CustomizableOutDir时,我遇到了TFS Team Build正确触发MSTest.exe的问题.
TFSBuild.rsp
/verbosity:diagnostic
/p:CustomizableOutDir=true
Run Code Online (Sandbox Code Playgroud)
TFSBuild.proj(构建代码段的解决方案)
<!-- code -->
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../foo.csproj">
<Properties>OutputPath=$(BinariesRoot)\WindowsServices\foo\</Properties>
</SolutionToBuild>
<!-- tests -->
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../test/test.sln">
<Targets>t1;t2</Targets>
<Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties>
</SolutionToBuild>
Run Code Online (Sandbox Code Playgroud)
使用<Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties>和<Properties></Properties>,我在构建结束时收到以下错误:
"C:\ build\BuildType\TFSBuild.proj"(TestConfiguration target)(1:12) - >(CoreTestConfiguration target) - >
MSBUILD:警告MSB6003:无法运行指定的任务可执行文件"MSTest.exe".目录名称无效
找到这篇文章后,我又添加了以下内容:
<Target Name="AfterCompile">
<ItemGroup>
<SolutionOutputs Condition="'%(CompilationOutputs.Solution)' == '$(Solution)'" Include="%(RootDir)%(Directory)**\*.*" />
<ServiceOutputs Include="$(BinariesRoot)\WindowsServices\**\*.*" />
<TestHarnessOutputs Include="$(BinariesRoot)\TestHarness\*.*" />
</ItemGroup>
<Copy SourceFiles="@(SolutionOutputs)" DestinationFolder="$(TeamBuildOutDir)" />
<Copy SourceFiles="@(ServiceOutputs)" DestinationFolder="$(TeamBuildOutDir)" />
<Copy SourceFiles="@(TestHarnessOutputs)" DestinationFolder="$(TeamBuildOutDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这给了这个:
(AfterCompile目标) - >
C:\ build\BuildType\TFSBuild.proj(289,5):错误MSB3023:没有为复制指定目标.请提供"DestinationFiles"或"DestinationDirectory".
DestinationDirectory不是架构的一部分http://schemas.microsoft.com/developer/msbuild/2003,但我想我还是会尝试它.所以我DestinationFolder把复制任务的所有内容都改为了DestinationDirectory …
我在Cocoa项目中使用了一些Carbon代码来处理来自其他应用程序的全局键事件(快捷方式).目前我已经设置了一个kEventHotKeyReleased事件处理程序,当我的应用程序不活动时,我可以成功获取热键.这会在我的应用程序中触发一些操作
我的行为问题kEventHotKeyReleased是:
例如,我按下Cmd-Shift-P组合键.一旦我释放"P"键,就会触发热键事件.当所有键都未被按下时,我需要能够触发事件(或手动触发它)(即:Cmd和Shift键也被释放).
监控热键很容易,但我没有看到任何用于监控单个按键的信息.如果我可以监控修改键关键状态,我就会开展业务.
关于如何做到这一点的任何提示?
提前致谢!
更新:
我已经尝试过使用kEventRawKeyUp,kEventRawKeyModifiersChanged但是kEventHotKeyReleased尽管我将它们设置为完全相同的方式,但它们仍在使用kEventHotKeyReleased.
EventTypeSpec eventTypes[] = {{kEventClassKeyboard, kEventHotKeyReleased}, {kEventClassKeyboard, kEventRawKeyUp}};
// Changing the order in the list does not help, nor does removing kEventHotKeyReleased
OSStatus err = InstallApplicationEventHandler(&globalHotkeyHandler, GetEventTypeCount(eventTypes), eventTypes, NULL, NULL);
// err == noErr after this line
Run Code Online (Sandbox Code Playgroud)
要求该globalHotKeyHandler方法kEventHotKeyReleased,但kEventRawKeyUp由于某种原因我似乎无法掌握.这是我的globalHotKeyHandler方法的样子:
OSStatus globalHotkeyHandler(EventHandlerCallRef nextHandler, EventRef anEvent, void *userData) {
NSLog(@"Something happened!");
} …Run Code Online (Sandbox Code Playgroud) 人们如何将cronjobs部署/版本控制生产?我对人们使用的约定/标准比任何特定的解决方案更好奇,但我碰巧使用git进行版本控制,而cronjob正在运行python/django脚本.
如何将字符串转换为在Perl中与自身匹配的正则表达式?
我有一组像这样的字符串:
Enter your selection:
Enter Code (Navigate, Abandon, Copy, Exit, ?):
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为正则表达式,我可以匹配其他东西.在大多数情况下,字符串与正则表达式相同,但在上面的第二个示例中没有,因为(和?在正则表达式中有意义.因此第二个字符串需要变成如下表达式:
Enter Code \(Navigate, Abandon, Copy, Exit, \?\):
Run Code Online (Sandbox Code Playgroud)
我不需要匹配太严格,所以像这样的东西会很好:
Enter Code .Navigate, Abandon, Copy, Exit, ..:
Run Code Online (Sandbox Code Playgroud)
我目前的想法是,我可以使用类似的东西:
s/[\?\(\)]/./g;
Run Code Online (Sandbox Code Playgroud)
但我真的不知道字符串列表中会有哪些字符,如果我错过了一个特殊字符,那么我可能永远不会注意到程序没有按预期运行.我觉得应该有一个普遍的解决方案.
谢谢.
我编写了一个Python脚本,用于检查某个电子邮件地址并将新电子邮件传递给外部程序.如何让这个脚本全天候执行,例如将其转换为Linux中的守护程序或服务.我是否还需要一个永远不会在程序中结束的循环,或者可以通过多次执行代码来完成它?
似乎在System.Threading.Timer回调函数的回调中调用Winforms控件上的Invoke泄漏句柄,直到计时器被释放.有没有人知道如何解决这个问题?我需要每秒轮询一次值并相应地更新UI.
我在一个测试项目中尝试过,以确保这确实是泄漏的原因,这只是以下几点:
System.Threading.Timer timer;
public Form1()
{
InitializeComponent();
timer = new System.Threading.Timer(new System.Threading.TimerCallback(DoStuff), null, 0, 500);
}
void DoStuff(object o)
{
this.Invoke(new Action(() => this.Text = "hello world"));
}
Run Code Online (Sandbox Code Playgroud)
如果您在Windows任务管理器中观看,这将泄漏2个句柄/秒.
我有这个代码
public class SomeClass<T>: IEnumerable<T>
{
public List<SomeClass<T>> MyList = new List<SomeClass<T>>();
public IEnumerator<T> GetEnumerator()
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
如何从MyList中提取IEnumerator?
谢谢StackoverFlower ....
昨晚我梦见以下是不可能的.但是在同一个梦里,来自SO的人告诉我.因此,我想知道是否可以转换System.Array为List
Array ints = Array.CreateInstance(typeof(int), 5);
ints.SetValue(10, 0);
ints.SetValue(20, 1);
ints.SetValue(10, 2);
ints.SetValue(34, 3);
ints.SetValue(113, 4);
Run Code Online (Sandbox Code Playgroud)
至
List<int> lst = ints.OfType<int>(); // not working
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Rails(目前是2.3.4)应用程序,该应用程序利用子域来隔离独立的帐户站点.要明确的是,我的意思是foo.mysite.com应该显示foo帐户的内容,bar.mysite.com应该显示栏的内容.
确保所有模型查询都限定在当前子域的最佳方法是什么?
例如,我的一个控制器看起来像:
@page = @global_organization.pages.find_by_id(params[:id])
Run Code Online (Sandbox Code Playgroud)
(注意@global_organization是通过subdomain-fu在application_controller中设置的.)当我喜欢的是:
@page = Page.find_by_id(params[:id])
Run Code Online (Sandbox Code Playgroud)
Page模型找到的位置自动限定在正确的组织中.我尝试过使用default_scope指令,如下所示:(在Page模型中)
class Page < ActiveRecord::Base
default_scope :conditions => "organization_id = #{Thread.current[:organization]}"
# yadda yadda
end
Run Code Online (Sandbox Code Playgroud)
(再次,请注意,相同的application_controller将Thread.current [:organization]设置为组织的全局访问ID.)此方法的问题是默认范围在第一个请求上设置,并且永远不会在后续请求中更改不同的子域名.
到目前为止有三种明显的解
1为每个子域使用单独的vhost,并且每个子域只运行应用程序的不同实例(使用mod_rails).此方法不适用于此应用.
2使用上面的原始控制器方法.不幸的是,应用程序中有相当多的模型,许多模型都是从组织中删除的一些连接,因此这种表示法很快变得很麻烦.更糟糕的是,这主动要求开发人员记住并应用限制或冒重大安全问题.
3使用before_filter重置每个请求的模型的默认范围.不确定此处的性能或如何最好地选择要更新的模型.
思考?我还缺少其他任何解决方案吗?这似乎是一个普遍的问题,必须有一个最佳实践.感谢所有投入,谢谢!
.net ×2
c# ×2
cocoa ×1
cron ×1
crontab ×1
daemons ×1
django ×1
git ×1
handle-leak ×1
ienumerable ×1
linux ×1
liquibase ×1
macos-carbon ×1
mstest ×1
objective-c ×1
perl ×1
plsql ×1
python ×1
regex ×1
scripting ×1
sql ×1
team-build ×1
tfs ×1
timer ×1
winforms ×1