我正在创建一个包含一系列事件的类,其中一个是GameShuttingDown
.触发此事件时,我需要调用事件处理程序.此事件的目的是通知用户游戏正在关闭,他们需要保存他们的数据.保存是等待的,事件不是.因此,当处理程序被调用时,游戏会在等待处理程序完成之前关闭.
public event EventHandler<EventArgs> GameShuttingDown;
public virtual async Task ShutdownGame()
{
await this.NotifyGameShuttingDown();
await this.SaveWorlds();
this.NotifyGameShutDown();
}
private async Task SaveWorlds()
{
foreach (DefaultWorld world in this.Worlds)
{
await this.worldService.SaveWorld(world);
}
}
protected virtual void NotifyGameShuttingDown()
{
var handler = this.GameShuttingDown;
if (handler == null)
{
return;
}
handler(this, new EventArgs());
}
Run Code Online (Sandbox Code Playgroud)
// The game gets shut down before this completes because of the nature of how events work
DefaultGame.GameShuttingDown += async (sender, args) => await this.repo.Save(blah); …
Run Code Online (Sandbox Code Playgroud) 我已经podfile
定义了以下pod.
platform :ios, '8.0'
use_frameworks!
target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0'
end
Run Code Online (Sandbox Code Playgroud)
我安装了pod并打开了我的工作区.我发现Alamofire的任何使用都可以正常工作,因为它将Swift 2版本作为框架导入项目.
当我尝试使用SSKeychain课程时,我会收到一个
使用未解析的标识符'SSKeychain`
同样适用于我尝试在LiveSDK中使用的任何类.
我的项目根目录中有一个桥头,项目配置为使用它.
#ifndef Header_h
#define Header_h
#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"
#endif /* Header_h */
Run Code Online (Sandbox Code Playgroud)
如果我改变了#import
从
#import "SSKeychain/SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)
至
#import "SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)
Xcode无法编译,因为它无法找到该文件.所以我假设桥接头正在工作,因为我的桥接头现在构建的方式不会因为找不到头而导致任何编译器错误.
桥头
框架搜索路径
我还将项目根目录添加到框架搜索路径中.
链接的框架
最后,我还将所有框架链接到项目中.
我的设置错过了什么吗?我已经有一周没能让Cocoapods在我的项目上工作了.我甚至创建了一个全新的项目,认为我的搞砸了; 这没有改变一件事.我不知道该怎么做才能解决这个问题.
在做了一些额外的研究之后,我发现了一篇博文,显示你必须在用户标题搜索中包含你的Pods目录
一位评论者还提到,如果您使用较新的Cocoapods Frameworks支持Swift,则需要包含Frameworks/**搜索路径.我已经包含了Pods/**和Frameworks/**但仍有相同的问题.
在进一步阅读之后,它开始听起来像是Cocoapods的限制.据我所知,您不能在项目中同时使用库和框架.
我设置我的Visual Studio Team Service帐户来克隆我的私有GitHub仓库,并在我对构建进行排队时构建Windows UWP应用程序.克隆工作没有任何问题; 除了一个项目之外,每个项目的编译(6)都有效.Windows UWP应用程序项目.
构建服务器编译应用程序时,我收到以下警告:
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0104:找不到证书文件'myapp_TemporaryKey.pfx'.
2> C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0104:找不到证书文件'myapp_TemporaryKey.pfx'.[C:\一个\ 1\S \源\应用\ myapp.WindowsUWP\myapp.csproj]
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0102:项目中指定的指纹'58F2EA544193F6FC9F2737135570555B388E58D8'的证书不能在证书商店找到.请在项目文件中指定有效的指纹.
2> C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0102:项目中指定的带有指纹'58F2EA544193F6FC9F2737135570555B388E58D8'的证书在证书商店中找不到.请在项目文件中指定有效的指纹.[C:\一个\ 1\S \源\应用\ myapp.WindowsUWP\myapp.csproj]
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0107:指定的证书对签名无效.有关有效证书的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478.2> C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(1778,5):警告APPX0107:指定的证书对签名无效.有关有效证书的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478.[C:\一个\ 1\S \源\应用\ myapp.WindowsUWP\myapp.csproj]
这是6个编译中的最后一个项目.收到警告后,它会将所有输出文件复制到最终/ bin目录.然后,当它完成后,报告与上面相同的消息,但这次是错误并且无法构建.
_GenerateAppxPackageFile:C:\ Program Files(x86)\ Windows Kits\10\bin\x64\MakeAppx.exe pack/l/h sha256/f obj\x86\Debug\package.map.txt/o/p C:\ a\1\s\Source\Applications\MyApp.WindowsUWP\AppPackages\MyApp_1.0.0.0_x86_Debug_Test\MyApp_1.0.0.0_x86_Debug.appx
MyApp - > C:\ a\1\s\Source\Applications\MyApp.WindowsUWP\AppPackages\MyApp_1.0.0.0_x86_Debug_Test\MyApp_1.0.0.0_x86_Debug.appx C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2382,5):错误APPX0104:证书文件找不到"MyApp_TemporaryKey.pfx".2> C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2382,5):错误APPX0104:找不到证书文件"MyApp_TemporaryKey.pfx".[C:\ a\1\s\Source\Applications\MyApp.WindowsUWP\MyApp.csproj] C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2382 ,5):错误APPX0102:在证书库中找不到项目中指定的指纹"58F2EA544193F6FC9F2737135570555B388E58D8"的证书.请在项目文件中指定有效的指纹.2> C:\ Program …
msbuild build-server win-universal-app visual-studio-2015 azure-devops
我不太熟悉g ++编译器,尤其是选项,例如-s,-g和-O.
首先,我可以问这些选项何时生效?在编译或链接阶段?我通常会在两个阶段都提出我需要的所有选项.
其次,有-g1,-g2,-g3选项吗?我知道-g在to executable中添加了调试信息.其他人有何不同?
第三,-s做什么?-s,-g和-O3一起工作?我的目标是使可执行文件1)快速运行,2)如果可能的话,小尺寸.你有什么建议?
我有一个数据上下文(UserPreferences
)分配给我的主窗口,以及一个文本框,它双向绑定到上下文中的一个数据上下文属性(CollectionDevice
)中的属性.
加载窗口时,文本框不会绑定到模型中的属性.我在调试器中验证数据上下文是否设置为模型对象,并且模型的属性已正确分配.然而,我得到的是一系列带有0的文本框.
当我将数据输入文本框时,数据将在模型中更新.当我加载数据并将其应用于数据上下文时,问题才会发生,文本框不会更新.
当我将模型保存到数据库时,将从文本框中保存正确的数据.当我从数据库恢复模型时,将应用正确的数据.当模型应用于构造函数中的数据上下文时,文本框的datacontext包含正确的数据,并且它的属性按原样分配.问题是UI没有反映这一点.
XAML
<Window.DataContext>
<models:UserPreferences />
</Window.DataContext>
<!-- Wrap pannel used to store the manual settings for a collection device. -->
<StackPanel Name="OtherCollectionDevicePanel">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Margin="10, 10, 0, 0" Text="Baud Rate" />
<TextBox Name="BaudRateTextBox" Text="{Binding Path=SelectedCollectionDevice.BaudRate, Mode=TwoWay}" Margin="10, 10, 0, 0" MinWidth="80" ></TextBox>
</StackPanel>
<WrapPanel>
<TextBlock VerticalAlignment="Center" Margin="10, 10, 0, 0" Text="Com Port" />
<TextBox Text="{Binding Path=SelectedCollectionDevice.ComPort, Mode=TwoWay}" Margin="10, 10, 0, 0" MinWidth="80" ></TextBox>
</WrapPanel>
<WrapPanel>
<TextBlock VerticalAlignment="Center" Margin="10, 10, 0, 0" …
Run Code Online (Sandbox Code Playgroud) 如果我创建一个如下所示的简单类:
public class TestClass
{
public Task TestMethod(int someParameter)
{
return Task.FromResult(someParameter);
}
public async Task TestMethod(bool someParameter)
{
await Task.FromResult(someParameter);
}
}
Run Code Online (Sandbox Code Playgroud)
并且在NDepend中检查它,它表明TestMethod
采用bool并且async Task
有一个为它生成的结构,包括枚举器,枚举器状态机和一些额外的东西.
为什么编译器生成一个TestClass+<TestMethod>d__0
用异步方法的枚举器调用的结构?
它似乎比实际方法产生更多的IL.在这个例子中,编译器为我的类生成35行IL,同时为结构生成81行IL.它还增加了编译代码的复杂性,并导致NDepend为几个规则违规标记它.
我有一个父表,表示一个文件,表中的每个记录在子表中有n个子记录.每个子记录可以有n个孙子记录.这些记录处于已发布状态.当用户想要修改已发布的文档时,我们需要克隆父项及其所有子项和孙项.
表结构如下所示:
CREATE TABLE [ql].[Quantlist] (
[QuantlistId] INT IDENTITY (1, 1) NOT NULL,
[StateId] INT NOT NULL,
[Title] VARCHAR (500) NOT NULL,
CONSTRAINT [PK_Quantlist] PRIMARY KEY CLUSTERED ([QuantlistId] ASC),
CONSTRAINT [FK_Quantlist_State] FOREIGN KEY ([StateId]) REFERENCES [ql].[State] ([StateId])
);
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE [ql].[QuantlistAttribute]
(
[QuantlistAttributeId] INT IDENTITY (1, 1),
[QuantlistId] INT NOT NULL,
[Narrative] VARCHAR (500) NOT NULL,
CONSTRAINT [PK_QuantlistAttribute] PRIMARY KEY ([QuantlistAttributeId]),
CONSTRAINT [FK_QuantlistAttribute_QuantlistId] FOREIGN KEY ([QuantlistId]) REFERENCES [ql].[Quantlist]([QuantlistId]),
)
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE …
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET MVC 5.2.3中有一个应用程序,由NuGet安装本地化的附属程序集,以显示下载的pt-BR验证消息:
https://www.nuget.org/packages/Microsoft.AspNet.Mvc.pt-br/
它在我的开发环境中工作并加载所有pt-BR本地化字符串,但是当我在我们的一个服务器中发布时,消息仍然显示在en-US中.
下面的屏幕截图显示了有关MVC版本和文化以及UI文化的一些信息:
似乎资源dll没有加载,但是,应用程序在pt-BR文化中运行.
资源DLL System.Web.Mvc.resources.dll位于/ bin/pt-BR文件夹中.
web.config全球化部分已配置:
<!-- language: lang-html -->
<globalization culture="pt-BR" uiCulture="pt-BR" enableClientBasedCulture="false" />
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
bin目录内容列表:
\ bin\Antlr3.Runtime.dll
\bin\Autofac.dll
\bin\Autofac.Integration.Mvc.dll
\bin\Autofac.Integration.WebApi.dll
\bin\AutoMapper.dll
\bin\AutoMapper.Net4.dll
\bin\BootGridMvc.dll
\bin\CookComputing.XmlRpcV2.dll
\bin\EntityFramework.dll
\bin\EntityFramework.SqlServer.dll
\bin\MyApp.Core.Business.dll
\bin\MyApp.Core.Data.dll
\bin\MyApp .Core.Models.dll
\bin\MyApp.Core.Report.dll
\bin\MyApp.Web.Mvc.dll
\bin\itextsharp.dll
\bin\Microsoft.AspNet.Identity.Core.dll
\bin\Microsoft.AspNet .Identity.EntityFramework.dll
\bin\Microsoft.AspNet.Identity.Owin.dll
\bin\Microsoft.Owin.dll
\bin\Microsoft.Owin.Host.SystemWeb.dll
\bin\Microsoft.Owin.Security.Cookies.dll
\bin\Microsoft.Owin.Security.dll
\bin\Microsoft.Owin.Security.Facebook.dll
\bin\Microsoft.Owin.Security.Google.dll
\bin\Microsoft.Owin.Security.MicrosoftAccount.dll
\bin\Microsoft .Owin.Security.OAuth.dll
\bin\Microsoft.Owin.Security.Twitter.dll
\bin\Microsoft.Web.Infrastructure.dll
\bin\Newtonsoft.Json.dll
\bin\Owin.dll
\bin\Portable.Licensing .dll
\bin\System.Net.Http.Formatting.dll
\bin\System.Web.Helpers.dll
\bin\System.Web.Http.dll
\bin\System.Web.Http.WebHost.dll
\bin\System. Web.Mvc.dll
\bin\System.Web.Optimization.dll
\bin\System.Web.Razor.dll
\bin\System.Web.WebPages.Deployment.dll
\bin\System.Web.WebPages.dll
\bin\System.Web.WebPages.Razor.dll
\bin\T4MVCExtensions.dll
\bin\WebGrease.dll
\bin\pt-br
\bin\pt-br\System.Web.Mvc.resources.dll
在我的IRC应用程序中,应用程序从IRC服务器接收内容.内容被发送到工厂并且工厂吐出IMessage
可以由应用程序的表示层使用的对象.的IMessage
接口和单一的实现如下所示.
public interface IMessage
{
object GetContent();
}
public interface IMessage<out TContent> : IMessage where TContent : class
{
TContent Content { get; }
}
public class ServerMessage : IMessage<string>
{
public ServerMessage(string content)
{
this.Content = content;
}
public string Content { get; private set; }
public object GetContent()
{
return this.Content;
}
}
Run Code Online (Sandbox Code Playgroud)
要接收IMessage
对象,表示层将订阅在我的域层中发布的通知.通知系统将订阅者集合迭代到指定的IMessage
实现,并向订阅者发出回调方法.
public interface ISubscription
{
void Unsubscribe();
}
public interface INotification<TMessageType> : ISubscription where TMessageType : …
Run Code Online (Sandbox Code Playgroud) 我的launchsettings.json
ASP.Net Core项目中有一个文件,其中包含一些不同的配置文件,其中两个允许我在使用SQL Server和Sqlite之间切换.
"Windows: Dev - Sql Server": {
"commandName": "Project",
"environmentVariables": {
"StorageProvider": "MSSQLServer",
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Windows: Dev - Sqlite": {
"commandName": "Project",
"environmentVariables": {
"StorageProvider": "Sqlite",
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
Run Code Online (Sandbox Code Playgroud)
我想对两个配置文件运行我的集成测试,这样我就可以确保我的数据存储提供程序抽象层适用于两个数据存储.如何在给定的配置文件下运行我的集成测试,这只是NUnit测试?我正在阅读现有的答案,但它不适用于我.我不想在测试中硬编码我想要的配置文件/环境.它们需要是可配置的,以便我可以在自动构建期间运行测试.
谢谢
c# ×5
asynchronous ×2
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
azure-devops ×1
build-server ×1
cocoapods ×1
compilation ×1
covariance ×1
data-binding ×1
events ×1
exception ×1
g++ ×1
ios ×1
msbuild ×1
mvvm ×1
ndepend ×1
options ×1
performance ×1
sql ×1
sql-insert ×1
sql-server ×1
unit-testing ×1
wpf ×1
xaml ×1
xcode ×1
xcode7-beta2 ×1