我有一个MSBuild文件,用于构建*/ .sln文件(构建所有存在的.sln文件).
构建使用Build目标,因此如果没有对输入文件进行任何更改,则不应再次构建任何项目.
我想只在项目实际上再次构建时才执行一些自定义目标.
如何才能做到这一点?
无论编译/构建是否实际发生,都始终调用AfterBuild和AfterCompile.
作为一名C#程序员,他有兴趣探索"如何工作",我有兴趣了解更多关于使新异步功能工作的过程.
我关注过Eric Lippert关于异步的优秀文章系列:异步博客文章
我不记得在任何地方看到任何对此功能的实现的引用(在高级别),除了"编译器正在为我们完成大部分工作"这一事实.
这个功能严格来说是编译器功能吗?编译器是否以某种方式重写代码,那就是它?还是有其他的东西,如运行时支持,使这种情况发生?
我们有一个设置,我们的Android游戏包含一些使用ndk-build构建的本机库.
我们的项目包含以下结构:
Root
|
|-- jni
|
|-- Android.mk // $include ( lib.mk ) and ( photon/photon.mk)
|-- lib.mk
|-- photon
|
|----- photon.mk
|----- debug_android_armeabi.mk
|----- release_android_armeabi.mk
Run Code Online (Sandbox Code Playgroud)
其中一个构建的库(Photon)除了它的主要文件之外还有2个额外的makefile - 一个用于调试,一个用于发布.
我的问题是 - 如何将此信息传递给ndk-build,以便在构建时可以获取正确的附加mk文件?
经过一些阅读,我收集.NET Remoting是一个已弃用的API,已被WCF取代.
我正在编写一个自动化框架,并希望在本地或某些远程机器上引用类型/方法的DLL,并执行它们而不考虑它们执行的位置.
我认为Remoting是要走的路,因为我猜所有功能都是在代理对象上执行的,如果它是本地对象或远程,则无关紧要.
WCF如何执行这种操作(如果有的话)或.NET Remoting是要走的路?
或许还有其他一些我没有想到的选择?
我有一个组件从标准.NET配置(app.config)文件中读取一些配置.
当我为这个组件运行单元测试(NUnit)时(使用TD.NET),我注意到没有读取配置文件.
经检查 AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
我注意到它的'值设置为C:\ Users\ltal\AppData\Local\Temp\tmp6D2F.tmp(一些临时随机位置).
为什么会发生这种情况有原因吗?(是NUnit还是TD.NET的错?)
我想我可以自己设置这个SetupInformation对象,为了测试,还没有尝试过,但仍然想知道为什么它是这样创建而不是默认.
我正在使用Microsoft XNA框架开发一个游戏项目,尽管这个问题是涉及类/系统解耦的通用问题.
假设我有一个类(简化为适合此示例),如下所示:
public class GameCell
{
public Color Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想在多个使用C#的平台之间重用尽可能多的代码.
直接引用Color结构的问题是这种类型是在XNA程序集中定义的,在我的代码和XNA之间创建了强耦合(或依赖).
我将使用的另一个框架可能(或可能不)具有自己的Color对象,具有自己的一组属性和API.
我希望有相同的源文件"知道"自动使用XNA或其他框架的实现.
我知道其他类型的解耦方法,如IoC,但这意味着我将插入不同版本的系统/类,而不是在不同的上下文中重用相同的类.
这甚至可能吗?您如何建议保持这样的系统便携?
我已经看到了一些情况(在本机C++开发中),你将定义一组类,这些类镜像你正在使用的框架所具有的类(例如这里 - 再次定义Color),因此可以"重新定义映射"稍后根据需要使用不同的类.
另一种选择是使用#IFDEF来处理类的头部中的using语句(从XNA切换到其他平台).在这种情况下,最好的选择是什么?
我们正在构建一个.NET应用程序,我们加载外部代码程序集("插件").到目前为止,我们将这些程序集加载到单个(主)应用程序域中.
我们希望能够在加载后卸载它.
为此,我们正在设计一个系统,该系统将创建一个单独的辅助AppDomain来托管插件程序集,以便随意卸载.
我们用这种方法遇到的问题:
在这种情况下,是否存在对应用程序进行分区的常见做法?我们可以采用的最佳解决方案是什么?
另一个有趣的问题 - 为什么MarshalByRef没有属性并迫使我们从一个对象派生出来?
我们的基于WinForms的应用程序获取由Visual Studio生成的文档文件(Xml文档),执行一些XSLT转换并将结果显示在表单内的WebBrowser控件中.
问题是,我们似乎无法显示换行符,例如xml文档中的标签.
例如:
<member name="T:Genesys.AgentLoginData">
<summary>
This is some test summary <br />
New line here
</summary>
</member>
Run Code Online (Sandbox Code Playgroud)
与XSL转换一起使用时,摘要文本将被截断为单行.
为简化起见,转换执行此操作以选择摘要文本:
<xsl:template match="member" >
<xsl:value-of select="summary" disable-output-escaping="yes" />
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
我们如何才能正确地在我们的应用程序中的WebBrowser控件中显示新行?
编辑:从WebBrowser控件添加"查看源"的内容.我所追求的是"这是一种方法"之后的新行,依此类推.浏览器只是在一行中显示.
<?xml version="1.0" encoding="utf-8"?><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Action Help</title><style type="text/css">
p {text-indent:200px;}
li {text-indent:180px;}
h1 {color:navy;}
h2 {color:blueviolet}
h4 {color:navy;}
</style></head><body><H2 xmlns="">AgentLogin</H2><H1 xmlns=""></H1><h3 xmlns="">
This is a method
And its parameter
Check this out
name</P></body></html>
Run Code Online (Sandbox Code Playgroud) 我们有一个VS2008解决方案文件,包含大约80个项目(是的,我知道它很糟糕).
项目安排在各种文件夹中,有些可能依赖于顶级"Libs"文件夹中的其他第三方DLL.
我们想将它重构为几个较小的.sln文件,每个文件包含合理数量的项目.
问题是,当移动项目文件时,存储在其中的相对路径将会中断,因此我们将不得不进行大量手动"补丁"来解决这个问题.
做这样的事情有没有任何工具或任何经过验证的技术?
我想在WCF服务上安装IErrorHandler的实现.
我目前正在使用此代码,它似乎没有做任何事情:
logServiceHost = new ServiceHost(typeof(Logger));
logServiceHost.AddServiceEndpoint(typeof(ILogger), binding, address);
// Implementation of IErrorHandler.
var errorHandler = new ServiceErrorHandler();
logServiceHost.Open();
// Add error handler to all channel dispatchers.
foreach (ChannelDispatcher dispatcher in logServiceHost.ChannelDispatchers)
{
dispatcher.ErrorHandlers.Add(errorHandler);
}
Run Code Online (Sandbox Code Playgroud)
我见过的所有代码示例(包括在我用于WCF的书中)都显示了如何使用自定义创建的IServiceBehavior来安装错误扩展.这是强制性的,还是我的方法也应该有效?
c# ×7
.net ×6
wcf ×2
android ×1
android-ndk ×1
appdomain ×1
architecture ×1
async-await ×1
asynchronous ×1
build ×1
clr ×1
decoupling ×1
msbuild ×1
msbuild-4.0 ×1
ndk-build ×1
nunit ×1
proxy ×1
remoting ×1
unit-testing ×1
xml ×1
xna ×1
xslt ×1