我有一个需要面向 .NET 3.5 和 .NET 4.0 的类库项目,现在完成的方式是为每个目标框架创建单独的项目并将每个项目中的文件链接到同一源的典型方法。
我想利用 .NET Core 项目推出的新 csproj 格式,因为使用新 csproj 格式进行多目标处理要简单得多。
我创建了一个新的类库 (.NET Core) 项目,并开始尝试移植现有的库。
我真的不需要以 .netcoreapp2.0 为目标,所以我的目标框架如下所示
<PropertyGroup>
<TargetFrameworks>net35;net40</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我有以下代码块来帮助解决.NET 3.5中新的 csproj 格式的奇怪问题。
<PropertyGroup>
<FrameworkPathOverride Condition="'$(TargetFramework)' == 'net35'">C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client</FrameworkPathOverride>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。事情开始走下坡路的是我的类库有 WPF 控件。我收到编译错误,因为它找不到System.Windows其他 WPF 相关项目。
我发现我可以添加对其他 Windows 程序集的引用,因此我添加了以下内容
<ItemGroup>
<Reference Include="PresentationFramework" />
<Reference Include="PresentationCore" />
<Reference Include="WindowsBase" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这消除了我的大部分错误,但现在我遇到了类似的错误The name 'InitializeComponent' does not exist in the current context
我最近发现 Visual Studio 2017 可以为Equalsand自动生成覆盖GetHashCode,但我想知道为什么该GetHashCode实现不在未经检查的块中?
我用两个公共字符串属性 Foo 和 Bar 创建了一个简单的类,生成的GetHashCode实现如下所示。
public override int GetHashCode()
{
var hashCode = -504981047;
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Foo);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Bar);
return hashCode;
}
Run Code Online (Sandbox Code Playgroud)
我的印象是未经检查的GetHashCode实现很重要,因为它很可能会溢出,而且我们不希望出现任何溢出异常,因为如果它环绕就可以了。
我正在尝试在IIS 10上托管ASP.NET Web API 2项目,并且我不断收到一个页面,说找不到Service Endpoint.
我用于测试的项目是ASP.NET Web API 2入门中的示例ProductsApp项目.如果我在调试中运行该项目,那么当它通过VS2012 IIS express在localhost上托管时,页面会按预期显示:54170
然后我使用VS2012将该项目发布到文件.
发布到文件后,我在IIS 10上的localhost:8080上创建了一个新站点,并指向我发布ProductsApp项目的文件夹的物理路径.
此时,如果我去浏览网站,它会出现一个页面,其中所说的是未找到服务端点.
我已将DefaultAppPool标识更改为LocalSystem,因此我认为这不是权限问题.
如何在我从VS2012调试时从IIS 10调试网站?
我们在 IIS 上托管一个网站,需要 HTTPS 请求,并且我遇到了一个与 Internet Explorer (IE) 如何处理 URL 重定向相关的奇怪错误。
如果初始请求是
http://my.domain.com/?param1=hello¶m2=100
那么 IIS 强制请求重定向到 HTTPS 请求,但生成的请求是
https://my.domain.com/?param1=hello¶m2=100¶m1=hello¶m2=100
在其他现代浏览器中,情况并非如此,请求会按预期重定向。
我们使用 URL 重写将请求重定向到 HTTPS
有其他人以前见过这个吗?有什么办法可以解决这个问题吗?