我正在尝试将多个项目从VC++ 2005迁移到VC++ 2010,我还需要将此应用程序从Win32移植到x64平台.
我知道项目文件可能包含两个平台的设置,但它要求我必须手动更改每个项目的平台设置,如果我想为x64构建.
我想要做的是只有一组可以针对这两个平台的解决方案/项目文件,并且通过某种简单的开关,我可以选择我现在正在构建的平台.有这样的方式吗?或者我必须维护两组解决方案/项目文件,每个平台一个,这样如果我想为x64构建,我只能打开x64的解决方案文件,如果我想为Win32构建,我有打开Win32的解决方案文件?
我有一个需要面向 .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
我正在制作一个 NuGet 包,我的 csproj 如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
...
<PackageId>Package2</PackageId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Package1\Package1.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
<Reference Include="System.Net.Http" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
它引用的项目如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
<PackageId>Package1</PackageId>
...
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<NoWarn>1701;1702; CS1591</NoWarn>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.6' OR '$(TargetFramework)'=='net461'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
<Reference Include="System.Net.Http" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
在Package2项目内部有以下行:
webRequestHandler.ClientCertificates.Add(certificate);
Run Code Online (Sandbox Code Playgroud)
但它不是构建在net461or中net47,而是说: …
我有一个VS2005解决方案,想要在新的一年里下VS2005.我对升级过程感到非常满意,并且惊喜地看到我的构建脚本大部分仍然有效.
我的问题是围绕多目标功能 - 我没有在我的服务器上安装.NET 3.5,所以我必须继续以.NET 2.0为目标.这主要是有效的,但我发现我可以做的事情
var returnMe = "result: " + result.ToString();
Run Code Online (Sandbox Code Playgroud)
...并且仍然成功调试项目.
当我将代码添加到构建服务器时,构建失败,说没有定义"var".
那么,我应该期待哪一个?
有任何想法吗?
.net multitargeting visual-studio-2008 visual-studio .net-2.0
我正在努力理解以下内容:
Scikit-learn 为 Ridge Regression 提供了多输出版本,只需交出一个二维数组 [n_samples, n_targets],但它是如何实现的?
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html
假设每个目标的每个回归都是独立的是否正确?在这些情况下,我如何调整它以对每个回归使用单独的 alpha 正则化参数?如果我使用 GridSeachCV,我将不得不交出一个可能的正则化参数矩阵,或者这将如何工作?
提前致谢 - 我已经搜索了几个小时,但找不到有关此主题的任何内容。
linear-regression multitargeting regularized scikit-learn grid-search
如果我将项目多目标定位到 .Net Core 3.1 和 .Net Framework 4.8 并且我选择了调试 | 开始调试,Visual Studio 2019 开始与 .Net Framework 构建目标的调试会话。
我怎样才能让它启动 .Net Core 构建目标?
这是我的测试项目文件:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net48;netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
using System;
namespace Demo
{
class Program
{
public static void Main(string[] args)
{
#if NET48
Console.WriteLine(".Net Framework");
#else
Console.WriteLine(".Net Core");
#endif
}
}
}
Run Code Online (Sandbox Code Playgroud)
项目中没有其他文件。我使用的是 Visual Studio 2019 版本 16.7.2。
以下是最初定义条件编译常量的方式(注意多目标):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net461</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0' OR '$(TargetFramework)' == 'netstandard2.0'">
<DefineConstants>NETCORE;</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net461'">
<DefineConstants>NETFULL;</DefineConstants>
</PropertyGroup>
...
</Project>
Run Code Online (Sandbox Code Playgroud)
当时NETCORE常量工作正常。
#if NETCORE
// Works Fine! Not gray in VS; Compiler recognizes code!
public string Abc { get; set; }
#endif
Run Code Online (Sandbox Code Playgroud)
我正在处理我的代码,但当时我的程序集没有编译。
之后,我添加了额外的条件编译常量(不编辑以前的 -NETFULL和NETCORE):
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0'">
<DefineConstants>NETCOREONLY;</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
整体代码(程序集)仍未编译。
并删除了NETCOREONLY不需要的附加项,只留下以前的(NETCORE和NETFULL)。
整体代码(程序集)仍未编译。
问题是它NETCORE不再像以前那样工作了。
我正在切换到netcoreapp2.0平台,但代码
#if NETCORE …Run Code Online (Sandbox Code Playgroud) conditional-compilation csproj multitargeting visual-studio .net-core
c# ×3
.net ×2
csproj ×2
.net-2.0 ×1
.net-core ×1
debugging ×1
dependencies ×1
grid-search ×1
msbuild ×1
regularized ×1
scikit-learn ×1
visual-c++ ×1
wpf ×1