我想运行一个MSBuild任务(签署一个可执行文件/ dll),但只有当输出exe/dll发生了变化时.如果没有任何源文件发生更改导致重新编译exe/dll,那么我不希望该任务运行.
尽管花费了几个小时尝试不同的东西,但我无法弄清楚如何在我的编译输出文件发生变化的情况下编译项目时才能运行目标任务(换句话说,我认为没有跳过CoreCompile目标).
我正在使用C#中的SqlConnection和AdomdConnection对象.
SqlConnection由以下构造:DbConnection,ICloneable.
AdomdConnection构造自:Component,IDbConnection,IDisposable,ICloneable.
我希望我可以使用通用接口或类类型来传递,但这似乎不是一个选项,因为它们不共享一个共同的类型,我可以告诉.
它们都有类似的方法我需要调用但是因为我要编写一些关于调用它们的逻辑,或者我想将它们包装到它们自己的类中然后只调用该类并让它担心底层类型.
最初,我以为我可以使用这样的东西:
public class ConnectionWrapper {
protected object _Conn;
public ConnectionWrapper(object Conn) {
_Conn = Conn;
}
public void Open() {
if (_Conn is SqlConnection) {
((SqlConnection) _Conn).Open();
} else if (_Conn is AdomdConnection) {
((AdomdConnection) _Conn).Open();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不禁怀疑没有更好的办法.
我遇到了TypeMap类(参见问题298976),这是一种更易读的方法,但我无法弄清楚如何使用返回值,但仍然想知道是否有更好的方法来做到这一点.