开发问题集锦
===
## 项目ClickOnce打包
- 老老实实用VS的打包工具,将依赖文件夹拷贝到打包工程,Include,build 选为 Content,文件多,可用xml打开项目工程,批量编辑
- 注意app.config不能设为content
- 启动的窗口默认布局问题
- 发布之前保存布局,存储路径为:
``` C:\Users\用户名\AppData\Roaming\ICSharpCode\SharpDevelop3.0\layouts
```
- 将此文件拷贝至目录data\resources\layouts\
![](/uploads/upload_03cd91b0a54531728a3cf3e20b41143c.png)
![](/uploads/upload_8f263c1daa250935005c6f300ba26c44.png)![](/uploads/upload_b0d234db6759d2acbbbf4b2aaedd080d.png)
- clickonce 安装问题 [卸载](https://blog.csdn.net/m15188153014/article/details/64920782)
>HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0\PackageMetadata,然后把原来的注册表删了,就可以安装了。
## VSCODE
- ctrl+k ctrl+0 折叠当前全部代码
- ctrl+k ctrl+j 展开当前全部代码
- ctrl+shift+i 插入当前时间
## Python
[whl包库](https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal)
## GDAL
- 安装 [miniconda](https://docs.conda.io/en/latest/miniconda.html),修改源地址为阿里云镜像地址
```
conda init
conda config --set show_channel_urls yes
将以下地址,粘贴到 .condarc文件
show_channel_urls: false
channels:
- https://mirrors.aliyun.com/anaconda/cloud/ursky
- https://mirrors.aliyun.com/anaconda/cloud/stackless
- https://mirrors.aliyun.com/anaconda/cloud/simpleitk
- https://mirrors.aliyun.com/anaconda/cloud/rdkit
- https://mirrors.aliyun.com/anaconda/cloud/rapidsai
- https://mirrors.aliyun.com/anaconda/cloud/qiime2
- https://mirrors.aliyun.com/anaconda/cloud/pyviz
- https://mirrors.aliyun.com/anaconda/cloud/pytorch3d
- https://mirrors.aliyun.com/anaconda/cloud/pytorch-test
- https://mirrors.aliyun.com/anaconda/cloud/pytorch
- https://mirrors.aliyun.com/anaconda/cloud/psi4
- https://mirrors.aliyun.com/anaconda/cloud/plotly
- https://mirrors.aliyun.com/anaconda/cloud/omnia
- https://mirrors.aliyun.com/anaconda/cloud/ohmeta
- https://mirrors.aliyun.com/anaconda/cloud/numba
- https://mirrors.aliyun.com/anaconda/cloud/msys2
- https://mirrors.aliyun.com/anaconda/cloud/mordred-descriptor
- https://mirrors.aliyun.com/anaconda/cloud/menpo
- https://mirrors.aliyun.com/anaconda/cloud/matsci
- https://mirrors.aliyun.com/anaconda/cloud/intel
- https://mirrors.aliyun.com/anaconda/cloud/idaholab
- https://mirrors.aliyun.com/anaconda/cloud/fermi
- https://mirrors.aliyun.com/anaconda/cloud/fastai
- https://mirrors.aliyun.com/anaconda/cloud/dglteam
- https://mirrors.aliyun.com/anaconda/cloud/deepmodeling
- https://mirrors.aliyun.com/anaconda/cloud/conda-forge
- https://mirrors.aliyun.com/anaconda/cloud/caffe2
- https://mirrors.aliyun.com/anaconda/cloud/c4aarch64
- https://mirrors.aliyun.com/anaconda/cloud/bioconda
- https://mirrors.aliyun.com/anaconda/cloud/biobakery
- https://mirrors.aliyun.com/anaconda/cloud/auto
- https://mirrors.aliyun.com/anaconda/cloud/Paddle
- https://mirrors.aliyun.com/anaconda/pkgs/r
- https://mirrors.aliyun.com/anaconda/pkgs/msys2
- https://mirrors.aliyun.com/anaconda/pkgs/main
- https://mirrors.aliyun.com/anaconda/pkgs/free
```
- 安装gdal
```
conda install gdal=3.4.2
```
> [color=#6c1faf] geopandas=0.10.2;gdal=3.4.2;fiona=1.8.21
---
- [GDAL编译库](http://www.gisinternals.com/release.php)
- shp文件字符串字段长度最大为254
- [参考](https://web.archive.org/web/20140402152927/http://php.scripts.psu.edu/jzl5325/wordpress/?p=60)
>使用geopandas接口,依次安装:
>1、gdal
>2、fiona
>3、geopandas
---
## EDM问题
- EntityFramework 由原来的6.2.0和mysql 8.0.21,更新至6.4.4,mysql驱动更新至8.0.29,vs2017和vs2019出现了创建实体模型闪退的问题
> vs2017、2019安装目录对应的mysql驱动为8.0.24,因此只能安装8.0.24及以下connector
> 但在本地开发连接远端服务器时,会报“Character set 'utf8mb3' is not supported by .Net Framework.”
> 因此,按此处理:<font color="red">生成实体方案是切换到8.0.24版,运行时切换至8.0.29版</font>
> SY.EDM工程的引用也切换至8.0.24版本
> 实体生成在sypcloud_v1, vs2019工程中实现
> 发布时在sypcloud工程把SY.EDM编译一下,确保上传的是8.0.29版本的dll
- The given key was not present in the dictionary [问题解决方案](https://blog.csdn.net/qq_41603955/article/details/108855516)
- 修改一下App.config文件,唤醒vs
## MIKE模型适配器
- SY.MikelModelAdapter 为老的一套的接口
- SY.MikelModelAdapterEx 为新的一套DHI开源的接口,编译须为x64
## HEC-RAS模型适配器
- HEC River Analysis System COM组件引用,开发版本要与实际运行版本一致
- 河网文件、边界文件、方案文件等,文件中有涉及版本号的,均需修改为运行环境的hecras版本号,否则会导致hecras运行错误。
- 加载已发布到nuget上的hec-dss库
- 添加nuget源地址:> https://www.hec.usace.army.mil/nexus/repository/dss/
- nuget已发布的Hec-dss库对应的.net框架为4.7.2,如工程.net框架低于4.7.2则从nuget加载不了,需自行编译hec-dss
- 编译hec-dss
- 注意vc编译器的选择
- 注意jdk库的路径
- 注意ivf库的路径
## jsdelivr CDN 访问不了
- 将http://cdn.jsdelivr.net替换为http://fastly.jsdelivr.net 就行了。如果这个也挂了,打开 https://ipaddress.com/website/raw.githubusercontent.com 将GitHub的ip地址复制到host文件 C:\Windows\System32\drivers\etc\hosts就行,就是麻烦点。
> 作者:每天学点黑科技
链接:https://www.zhihu.com/question/533766356/answer/2495374387
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
## WCF服务
- 提示:已尝试创建到达不支持 .Net 框架的服务的通道。可能遇到 HTTP 终结点。
> 检查服务端config文件baseAddress使用的端口是否被其他应用占用,换一个端口。
- 服务启动失败
![](/uploads/upload_0ae7b4a14bfc4bb456b67432e969b0cc.png)![](/uploads/upload_082b7469203cc4d23bfa432df1b1797a.png)
> 原因
64bit机器装VS2012时,默认的WcfSvcHost.exe是64位,不兼容加载x86的Dll
> 解决方法:
1. 打开VS命令提示行
2. 通过cd命令切换到WcfSvcHost.exe所在文件夹
(一般在安装目录下,如D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE)
3. 运行命令 corflags /32BIT+ /FORCE WcfSvcHost.exe
4. WcfSvcHost.exe.config改为兼容2.0,否则服务调试时调用2.0程序集会出错
```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<runtime>
<DisableMSIPeek enabled="true"/>
</runtime>
</configuration>
```
Vs2015的好像不行,直接用vs2012的覆盖,VS2017 执行步骤3、4。
## 数据库及分布式存储
### ORM
#### entityframe
- 连接数据库报错:基础程序在open上失败的原因
> 解决方法:捕获innerexception消息,根据消息提示进一步查找原因。
### sqlserver
- 无法升级数据库 ‘某某数据库文件’,因为它是只读的,或者具有只读文件。请将数据库或文件设为可写,然后重新运行恢复操作。
> 将拟附加的数据库文件所在文件夹权限添加 everyone 角色
### mysql
- Authentication to host '**' failed.
> 如连接字符串没有任何问题,可在连接字符串中加入SslMode=None;
```xml
connection string="server=127.0.0.1;user id=username;password=pwd;SslMode=None;persistsecurityinfo=True;port=3306;database=sypdb""
```
- Retrieval of the RSA public key is not enabled for insecure connections
> 可在连接字符串中加入 AllowPublicKeyRetrieval=True;
### redis
- Redis server非正常关闭导致缓存失效,可以修改以下配置参数
>搜索找到配置文件:redis.windows-service.conf
修改以下参数值为on(默认为yes)
```
stop-writes-on-bgsave-error no
```
##
###### tags: `开发问题集锦` `博客`