Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在生成.NET4.0项目时自动生成.NET4.5项目?它不需要被引用_C#_.net - Fatal编程技术网

C# 在生成.NET4.0项目时自动生成.NET4.5项目?它不需要被引用

C# 在生成.NET4.0项目时自动生成.NET4.5项目?它不需要被引用,c#,.net,C#,.net,我有一个用.NET4.0构建的C#项目,它对用.NET4.5构建的项目具有软/间接依赖性(通过反射) 我正在试图找出my40project.csproj中的条目,它将在我构建my40project.csproj时构建my45project.csproj。不过,我根本不需要在4.0项目中引用生成的DLL 我在my40project.csproj中有以下条目: <ProjectReference Include="$(RootDir)\path\to\project\my45project.c

我有一个用.NET4.0构建的C#项目,它对用.NET4.5构建的项目具有软/间接依赖性(通过反射)

我正在试图找出
my40project.csproj
中的条目,它将在我构建
my40project.csproj
时构建
my45project.csproj
。不过,我根本不需要在4.0项目中引用生成的DLL

我在
my40project.csproj
中有以下条目:

<ProjectReference Include="$(RootDir)\path\to\project\my45project.csproj">
  <Project>{some guid}</Project>
  <Name>my45project</Name>
</ProjectReference>
有人知道我如何解决这个问题吗?如果这是重复的,我道歉;搜索时发现的问题涉及在4.0项目中直接使用生成的.NET 4.5 DLL,我不需要这样做(我只需要构建它)


谢谢

由于不必直接引用项目,因此可以选择使用生成后事件来复制dll。基本上,您将两个项目都保存在一个解决方案中(不相互引用),并且您将4.5项目的后期构建事件配置为包含以下内容

copy /Y "source.dll" "destination"
这将确保您的4.0项目将要使用的dll在每次完整解决方案生成后始终是最新版本

编辑: 解决方案文件

Microsoft Visual Studio解决方案文件,格式版本12.00

Visual Studio 14 VisualStudioVersion=14.0.23107.0最小VisualStudioVersion=10.0.40219.1 项目({FAE04EC0-301F-11D3-BF4B-00C04F79EFBC})=“测试”、“测试\测试.csproj”、“{F6B2FFE-AEBD-4D47-99F6-B4EFD200E50A}”
EndProject
项目({FAE04EC0-301F-11D3-BF4B-00C04F79EFBC})=“test2”、“test2\test2.csproj”, “{AD7D893B-7113-4E96-8CC1-0321E576B2A2}”
末端工程

项目1目标:

<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
v4.5.2
项目2目标:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
v4.0
并构建解决方案

1> ------重新生成所有已启动:项目:测试,配置:调试任何CPU------
2> ------重新生成所有已启动:项目:test2,配置:调试任何CPU------
1> Test->----\Test.exe
2> test2->----\test2.exe
=========全部重建:2个成功,0个失败,0个跳过==========


根本不引用该项目,只需复制反射的输出dll。您不能将较低版本引用到较高版本,但可以将较低版本引用到较高版本,反之亦然。因为,很多系统都不支持前向兼容性,但支持后向兼容性。@Steve我需要确保,在我的大公司中,每当有人构建.NET 4.0项目时,也会构建4.5项目。它不必作为参考。也许有某种链或预构建指令?@MuhammadImran我想你误解了我的意图。我不需要直接的参考(这是不可能的)。我只需要某种预构建事件。复制DLL不是问题(我知道如何做),而是在开始构建4.0之前触发预构建事件来构建4.5项目project@Benjin如果您将项目包含在同一个解决方案中,那么在您执行解决方案构建时,它将被构建。您可以发布一个示例吗?一个标准的项目引用(如文章中的一个)将尝试编译它(很好),但是请注意引用是.NET4.5而不是@Benjin,因为您只需要dll进行反射,您根本不需要引用第二个项目,正如我上面提到的。您所需要做的就是在一个解决方案中包含这两个项目并执行解决方案构建。示例包括幸运的是,我们的构建系统不使用解决方案文件。临时解决方案文件是在打开项目时动态生成的。
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>