我们有一个用C#编写并使用Windows窗体的Office VSTO加载项.
在最近的Office更新之前,加载项呈现得很好.但在微软推出Office支持高清显示器之后,许多表单在Outlook 2016(MSO/Office 365)中开始呈现空白.
我可以通过在Outlook底部状态栏的"显示设置"中选择"优化兼容性"来解决Outlook中的问题:

但是,如果每个用户都必须手动执行此操作,这对我们的客户来说不是一个可行的解决方案.所以我有两个问题:
我发现禁用转换以一种形式修复了问题,其中控件在删除转换后开始出现.但是,即使在删除所有转换后,我们最重要的表单仍然呈现空白.
我还尝试将项目升级到.NET 4.7并为Windows Forms 启用新的高DPI支持.但这也没有解决问题.
我花了很长时间与谷歌一起找到关于这个主题的一些信息,但是与Java枚举和协变返回类型相关的结果几乎不存在.
所以:是否可以使用带有枚举方法的协变返回类型,在枚举类中定义一个方法,然后在实例中覆盖它,如下所示:
package enumcovariance.test;
public enum CovariantEnum {
INT_INSTANCE(new Integer(3)) {
@Override
public Integer getData () {
return (Integer) super.getData();
}
},
STR_INSTANCE("Hello world") {
@Override
public String getData () {
return (String) super.getData();
}
};
private final Object data;
private CovariantEnum(Object data) {
this.data = data;
}
public Object getData () {
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样利用协方差:
package enumcovariance.test;
import org.junit.Test;
public class CovariantEnumTest {
@Test
public void intEnumTest () {
Integer i = CovariantEnum.INT_INSTANCE.getData();
}
@Test
public void …Run Code Online (Sandbox Code Playgroud) 我在服务器上运行 Apache Tomcat/7.0.68,我正在尝试为其自动更新证书。
证书和私钥是通过 Java 的 keytool 从 PKCS#12 文件(摘自 Powershell 脚本)导入的:
& $keytool -importkeystore -srckeystore $certfile -srcstoretype PKCS12 -srcstorepass $srcpassword -srcalias tomcat -keystore $keystore -deststorepass $dstpassword -destalias teamcity -destkeypass $dstpassword -noprompt
Run Code Online (Sandbox Code Playgroud)
当我重新启动 Tomcat 时,它会输出以下日志行:
INFO: Initializing ProtocolHandler ["http-nio-443"]
jul. 14, 2017 5:03:31 PM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-nio-443"]
java.security.UnrecoverableKeyException: Cannot recover key
at sun.security.provider.KeyProtector.recover(KeyProtector.java:328)
at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:146)
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(JavaKeyStore.java:70)
at java.security.KeyStore.getKey(KeyStore.java:1023)
at sun.security.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:133)
at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:70)
at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:256)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:608) …Run Code Online (Sandbox Code Playgroud) 为了在Visual Studio 2013中调试Web API项目,我必须将Debug配置的输出路径设置为(意味着文件最终相对于解决方案根文件夹),这可以从这里的一些答案中看出.bin\{ProjectName}\bin
但是现在我面临的问题是我们bin\{ConfigurationName}在构建服务器设置中的几个地方使用了路径.我非常想统一Debug的设置和其他Visual Studio配置.
因此我的问题是:您是否知道统一所有配置的输出文件夹会产生任何问题bin\,导致文件夹结构{ProjectName}\bin?
如果这样做,有没有办法在不更改输出文件夹的情况下调试Web API项目bin\Debug\?