Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 23

0
votes
answers
11 views
+10

What are the correct version numbers for C#?

What are the correct version numbers for C#? What came out when? Why can't I find any answers about C# 3.5?

This question is primarily to aid those who are searching for an answer using an incorrect version number, e.g. C# 3.5. The hope is that anyone failing to find an answer with the wrong version number will find this question and then search again with the right version number.

0
votes
answers
34 views
+10

如何創建與左側用WPF標籤的一個簡單的菜單?

0

我一直在開發一些簡單的應用程序(只是教育目的)使用Windows窗體,現在我開始學習WPF,但似乎更復雜一點給我。如何創建與左側用WPF標籤的一個簡單的菜單?

我想創建這樣的一個你可以在圖片中看到一個簡單的菜單。我一直試圖找到它在谷歌和YouTube,但我只是找到了很多教程關於「漢堡包菜單」,這是不是我要找的。

Ultimate Windows Tweaker

Ultimate Windows Tweaker

Ultimate Windows Tweaker

沙发
0
1

這是真的,其中WPF眼前一亮的地區:你描述的佈局可以用什麼比一個重新設計的標籤控制多個。

開始與TabStripPlacementLeft的無樣式選項卡控件:

Unstyled tabstrip left

然後編輯TabControl風格添加漸變和利潤率TabPanel背後:

tabcontrol with unstyled tabitems

添加圖像並覆蓋TabItem樣式以設置字體並刪除黑色回合。我用了一個V形並指示選擇,而不是加粗的文字,但會被同樣的方式處理。

completed TabControl

下面是用於截圖上面全XAML:

<Window x:Class="StackOverflowTabControl.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:StackOverflowTabControl" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
     <Style x:Key="ItemContainerStyle" TargetType="{x:Type TabItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabItem}"> 
         <Grid Margin="15,5"> 
          <Path Width="10" Height="14" Margin="0,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Stretch="Fill" Fill="#FF000000" Data="F1 M 39.8307,37.6042L 36.6641,34.4375L 25.1849,23.3542L 35.4766,23.3542L 50.5182,37.6042L 35.4766,51.8542L 25.1849,51.8542L 36.6641,40.7708L 39.8307,37.6042 Z " Visibility="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/> 
          <ContentPresenter Content="{TemplateBinding Header}" Margin="20,5,10,5"> 
           <ContentPresenter.Resources> 
            <Style TargetType="{x:Type TextBlock}"> 
             <Setter Property="FontSize" Value="18" /> 
             <Setter Property="FontWeight" Value="Light" /> 
            </Style> 
           </ContentPresenter.Resources> 
          </ContentPresenter> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}"> 
      <Setter Property="TabStripPlacement" Value="Left" /> 
      <Setter Property="ItemContainerStyle" Value="{StaticResource ItemContainerStyle}" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabControl}"> 
         <Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto" /> 
           <ColumnDefinition Width="1*" /> 
          </Grid.ColumnDefinitions> 
          <Border Grid.Column="0" Padding="5"> 
           <Border.Background> 
            <LinearGradientBrush EndPoint="0,0" StartPoint="1,0"> 
             <GradientStop Color="#FFC7C7C7" Offset="0"/> 
             <GradientStop Color="#FFECECEC" Offset="1"/> 
            </LinearGradientBrush> 
           </Border.Background> 
           <DockPanel> 
            <Image DockPanel.Dock="Bottom" HorizontalAlignment="Center" Margin="20" Source="pack://application:,,,/StackOverflowTabControl;component/twc.png" Width="200" /> 
            <TabPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> 
           </DockPanel> 
          </Border> 
          <Border x:Name="contentPanel" Grid.Column="1" Margin="5,0,0,0"> 
           <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
          </Border> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <TabControl Style="{DynamicResource TabControlStyle1}"> 
      <TabItem Header="System Information"> 
       <TextBlock Text="Windows 10 pro" /> 
      </TabItem> 
      <TabItem Header="Something else"> 
       <TextBlock Text="Other page" /> 
      </TabItem> 
     </TabControl> 
    </Grid> 
</Window> 
+0

非常感謝你,米奇!這是一個非常好的和詳細的解釋。對此,我真的非常感激。我已經接受了你的答案! – AlexMnrs

0
votes
answers
22 views
+10

Azure網站部署 - .Net網站

1

我正在使用位桶源以azure進行網站部署。 當我做了部署,我可以看到它的總建築源, 其實是不需要給我,因爲它是一個Kentico 10網站(.NET網站項目)。Azure網站部署 - .Net網站

如何避免建築而源部署/拉從bitbuckt最新的?

enter image description here

沙发
0
0

應停止使用持續集成過程中到位桶和鉤您自己的過程做一個XCOPY(最好是三角形)到目標網站的文件夾。

板凳
0
0

使用OOB工具,不可能沒有一個構建部署。所以,你可以做幾件事情:

  • FTP

  • Visual Studio中創建成功後,當地發佈

  • 命令行復制。

另一種設置可以減少部署時的構建數量,但仍然會構建解決方案,在Bitbucket中構建更多分支。 您可以繼續使用配置項,但要確保將環境掛接到適當的分支,以便在您執行合併到該分支時才進行部署。

地板
0
0

我該如何避免建立源部署/從bitbuckt中取出最新版本?

你可以檢查部署細節下的「部署>部署選項」如下:

enter image description here

而且你可以利用KUDUD:homesitedeployments oolsdeploy.cmd下檢查自動生成deploy.cmd文件。

根據您的要求,我建議您自定義您的deploy.cmd文件,並將.deploymentdeploy.cmd文件放入您的Bitbucket存儲庫。對於一種簡單的方法,您可以下載當前的部署腳本並修改Deployment部分下的腳本,您需要刪除用於構建解決方案的腳本,並將腳本保留爲kudu sync,並且需要修改-f選項從"%DEPLOYMENT_TEMP%""%DEPLOYMENT_SOURCE%"當調用%KUDU_SYNC_COMMAND%時。詳情你可以按照Custom Deployment Script

+1

你可以這樣做,但你可以通過快捷鍵使用'SCM_SCRIPT_GENERATOR_ARGS'事情。看到我的答案。 –

4楼
0
0

如果你要部署的回購與根本沒有構建或改造的全部內容,只是在Azure的應用程序設置中設置SCM_SCRIPT_GENERATOR_ARGS=--basic。這將強制腳本生成器將其視爲「基本」站點,並且不會執行任何構建。

更多信息,請參見wiki

0
votes
answers
21 views
+10

如何在VS2017的C#中爲SQL Server Management Studio創建擴展?

1

我想寫SSMS 2017簡單的擴展,對於我跟着簡單的Hello World樣品從Microsoft Docs如下:如何在VS2017的C#中爲SQL Server Management Studio創建擴展?

  1. 從擴展項目模板創建VSIX項目

  2. 更改「啓動外部程序」在Project> Properties> Debug to 「C: Program Files(x86) Microsoft SQL Server 140 Tools Binn ManagementStudio Ssms.exe」。

    在命令行參數中添加「-S(localdb) MSSQLLocalDB -d sampleDB -E」作爲
    它需要指定servername/database來運行SSMS.exe。

  3. 使用添加新項

  4. 運行該項目

如果2 &#3,不執行步驟#,它工作正常使用Visual Studio,但是什麼也沒有發生與SSMS添加自定義命令,儘管它啓動了SSMS。

我是否錯過了某些東西,或者是否對創建SSMS加載項有任何限制?

+0

你確定你的項目已經註冊了正確的註冊表項嗎?例如SSMS 14,它是'HKCU Software Microsoft SQL Server Management Studio 12xxx'而不是'HKCU Software Microsoft VisualStudio' –

+0

我正在從VS本身調試,我應該在哪裏尋找註冊表? – usercr

+0

你解決了這個問題嗎? –

沙发
0
1

首先,你需要聲明SSMS支持你source.extension.vsixmanifest文件:

<Installation> 
    <InstallationTarget Id="ssms" Version="[14.0, 14.0]" /> 
    </Installation> 

那麼我不認爲VS可以自動安裝的擴展SSMS。所以,手動運行.vsix文件。

+0

我已經添加了安裝目標和運行vsix,但是,它仍然無法正常工作。 – usercr

0
votes
answers
40 views
+10

如何正確地爲ts-check聲明給定模塊的typescript全局類型?

1

形象地說,我有一個模塊Xpto與定義文件:如何正確地爲ts-check聲明給定模塊的typescript全局類型?

// node_modules/@types/xpto.d.ts 
export interface Vertx { 
    createHttpServer(handler:() => void) : void; 
} 

,並宣佈一個幫手來跟蹤我的全局:

// runtime.d.ts 
import {Xpto} from 'xpto'; 

declare const xpto: Xpto; 

終於在一個JS文件我有:

/// <reference path="runtime.d.ts" /> 
// @ts-check 

xpto.createHttpServer(function (req) { ... }); 

由於某種原因,我在vscode上得到一個錯誤:Cannot find name "xpto"但如果我導入類型:

import {xpto} from "runtime" 

但是,由於沒有真正的運行時模塊,這會產生破損的代碼,這只是一種方式來聲明哪些變量在全局範圍內可用。

沙发
0
1

我認爲問題是importexport使d.ts文件進入模塊聲明。這就是爲什麼全球版本不起作用,但import的版本。

嘗試使用declare global明確聲明xpto作爲一個全球性的:

import {Xpto} from 'xpto'; 

declare global { 
    declare const xpto: Xpto; 
} 
0
votes
answers
17 views
+10

對於標準庫中的項目,未顯示防鏽自動完成

-1

我無法在Ubuntu 16.04上的VS代碼上工作自動完成。對於標準庫中的項目,未顯示防鏽自動完成

我已經從https://www.rustup.rs/安裝了rustup並安裝了「rust-lang.rust」軟件包。該擴展安裝了rustfmt並試圖使用stablenightly工具鏈。

如果我輸入std::則不會顯示任何建議。建議在本地mod導入,但不與標準庫一起顯示。我試圖通過刪除uninstall.sh並手動刪除~/.multirust~/.cargo重新安裝,然後再次安裝,但沒有任何更改。

我做錯了什麼?

沙发
0
0

我沒有RUST_SRC_PATH變量集。在我的VS Code設置中,我添加了

"rust.rustLangSrcPath": "/home/ilya/.rustup/toolchains/**your_toolchain**/lib/rustlib/src/rust/src/" 

並且它完成了這項工作。該選項來自kalitaalexey.vscode-rust包。

0
votes
answers
31 views
+10

C++頭文件錯誤:基類未定義

-2

我目前收到很多挫折包括在我的起始項目中的頭文件。到目前爲止,我有一個頭文件鏈接到我的基本文件,我不斷收到編譯無法讀取我的基類的錯誤。C++頭文件錯誤:基類未定義

我認爲讀取頭文件時出現問題。我該怎麼辦?

//更新,現在它顯示與構建

主CPP文件

#include <string> 
#include "animal.h" 
using namespace std; 
enum COLOR { Green, Blue, White, Black, Brown }; 

int main() { 

cout << "Starting" << endl; 
int value = 0; Mammal *zoo[3]; 
int i = 0; 

cout << "Program exiting …. " << endl; 
return 0; 
} 

頭文件的編譯錯誤

#include <iostream> 
#include <string> 
#ifndef HEADER_H 
#define HEADER_H 

using namespace std; 
enum COLOR { Green, Blue, White, Black, Brown }; 

class Animal { 
public: 
Animal() { 
    cout << "constructing Animal object " << _name << endl; 
} 
~Animal() { 
    cout << "destructing Animal object " << _name << endl; 
} 

Animal(std::string n, COLOR c) { 
    _name = n; _color = c; 
    cout << "constructing " << _name << " Color " << 
     endl; 
} 

virtual void speak() const { cout << "Animal speaks " << endl; } 
//void speak() const { cout << "Animal speaks " << endl; } 
virtual void move() = 0; 

void setName(std::string n) { _name = n; } 
void setCOLOR(COLOR c) { _color = c; } 

private: 
std::string _name; COLOR _color; 
}; 

class Mammal : public Animal { 
public: 
Mammal() {} 
Mammal(std::string n, COLOR c) { 
    setName(n); 
    setCOLOR(c); 
    cout << "constructing Mammal object " << endl; 
} 
~Mammal() { cout << "destructing Mammal object " << endl; } 
}; 

#endif 
+0

在使用之前,不應該在'animal.h'中聲明'COLOR'? – user0042

+0

'COLOR'在cpp文件中定義,並且在頭文件中不可見,您正在使用'cout'和其他來自頭文件中'std'名稱空間的東西,而沒有正確地預先加入':: std ::'。 – VTT

沙发
0
0

使用pragma once和包括警衛一起多餘的。刪除任一個。

如果您在標頭中使用string,請不要忘記它需要std::前綴。

COLOR必須移動到頭文件。

// #pragma once 
#ifndef HEADER_H 
#define HEADER_H 

using namespace std; 
enum COLOR { Green, Blue, White, Black, Brown }; 

您還需要定義setName

結論:

在C和C++,每一種類型或函數必須聲明或定義第一再使用,而不是相反。

+0

它不是多餘的,一次使用'pragma'和頭部守衛可能會有不同的效果,而不是僅使用其中的一個。 – VTT

+0

@VTT,你在談論典型的實際用法嗎? – Arash

+0

@ArashMohammadi _「不要忘記在頭文件中使用namespace std' ...」_我能想到的最糟糕的建議。 – user0042

183
votes
answers
11 views
+10

Conditionally use 32/64 bit reference when building in Visual Studio

I have a project that builds in 32/64-bit and has corresponding 32/64-bit dependencies. I want to be able to switch configurations and have the correct reference used, but I don't know how to tell Visual Studio to use the architecture-appropriate dependency.

Maybe I'm going about this the wrong way, but I want to be able to switch between x86 and x64 in the configuration dropdown, and have the referenced DLL be the right bitness.

up vote 97 down vote accepted favorite
沙发
+970
+50

這是我在之前的項目中所做的,這將需要手動編輯.csproj文件。您還需要不同二進製文件的單獨目錄,理想情況下是彼此的兄弟姐妹,並且與您要定位的平台具有相同的名稱。

在添加單個平台對項目的引用後,打開.csproj文本編輯器。&lt; Project&gt; 元素中的第一個&lt; ItemGroup&gt; 元素之前,添加以下代碼,這將有助於確定您正在運行(和構建)的平台。

 &lt;! - 確定64位架構的屬性組 - &gt; &LT;&的PropertyGroup GT; &LT; CurrentPlatform&GT; 86&LT; / CurrentPlatform&GT; &LT; CurrentPlatform Condition =“'$(PROCESSOR_ARCHITECTURE)'=''AMD64'或'$(PROCESSOR_ARCHITEW6432)'=='AMD64'”&gt; AMD64&lt; / CurrentPlatform&gt; &LT; /&的PropertyGroup GT;   

然後,對於特定於平台的引用,您可以進行如下更改:

 &lt; ItemGroup&gt; &lt; Reference Include =“Leadtools,Version = 16.5.0.0,Culture = neutral,PublicKeyToken = 9cf889f53ea9b907,processorArchitecture = x86”&gt; &LT; SpecificVersion&GT;假&LT; / SpecificVersion&GT; &LT; HintPath&GT; .... LibLeadtools $(CurrentPlatform)Leadtools.dll&LT; / HintPath&GT; &LT; /參考和GT; &lt; Reference Include =“Leadtools.Codecs,Version = 16.5.0.0,Culture = neutral,/&GT; &lt;! - 其他項目參考 - &gt; &LT; /&的ItemGroup GT;   

注意使用我們在上面定義的 $(CurrentPlatform)屬性。相反,您可以使用條件來為哪個平??台包含哪些程序集。您可能還需要:

  • $(Platform)<替換 $(PROCESSOR_ARCHITEW6432) $(PROCESSOR_ARCHITECTURE) / code>僅考慮項目的目標平台
  • 更改平台確定邏輯以適合當前計算機,這樣您就不會構建/引用64位二進製文件來執行32位平台。

尼斯。我根據下面的建議使用ItemGroup上的條件,但是使用$(PROCESSOR_ARCHITEW6432)和$(PROCESSOR_ARCHITECTURE)作為條件。注意,我發現$(PROCESSOR_ARCHITECTURE)在32位和64位平台上返回x86,但$(PROCESSOR_ARCHITEW6432)僅在64位上返回AMD64。如果您嘗試測試x86,請注意一些事項(因為AMD64是我假設的x86的衍生物)。 - tjmoore 2013年1月31日12:47

感謝@tjmoore的那些信息。您注意到哪個O / S?我剛剛再次檢查了我的(Win7SP1),並說AMD64為$(PROCESSOR_ARCHITECTURE),但肯定希望盡可能提供完整和全面的信息。 - 雨果2013年2月4日22:49

有趣,我的搜索帶我到這裡,我只需要這個,因為我也在使用LeadTools ... + 1 - Ed S. 2013年2月6日在23:31

該解決方案適用於默認配置,但不適用於我的測試,如果您從Visual Studio(在我的案例中為2012)解決方案配置下拉列表中更改配置配置。 - Sarah Weinberger 2013年7月22日23:48

而不是使用$(PROCESSOR_ARCHITEW6432)我使用$(平台)由於某種原因$(PROCESSOR_ARCHITEW6432)無效。 - Dzyann 2014年2月26日19:44

+570

AFAIK,如果您的項目需要32位或64位特定的引用(即COM-interop程序集),並且您沒有興趣手動編輯.csproj文件,那麼您將不得不創建單獨的32 -bit和64位項目。

我應該注意以下解決方案未經測試,但應該可行。如果您願意手動編輯.csproj文件,那麼您應該能夠通過單個項目實現所需的結果。.csproj文件只是一個MSBuild腳本,因此要獲得完整的參考,請查看此處在編輯器中打開.csproj文件後,找到&lt; Reference&gt; 元素。您應該能夠將這些元素拆分為3個不同的項目組:非特定於平台的引用,特定於x86的引用和特定於x64的引用。

以下示例假設您的項目配置了名為“x86”的目標平台和“x64”

 &lt;! - 此組包含非平台特定的引用 - &gt; &LT;&的ItemGroup GT; &lt;參考包括=“系統”/&gt; &lt; Reference Include =“System.Core”/&gt; &lt;! - 非平台特定的任何其他參考 - &gt; &LT; /&的ItemGroup GT; &LT; ! -  x86特定參考 - &gt; &lt; ItemGroup Condition =“'$(Platform)'=='x86'”&gt; &lt; Reference Include =“MyComAssembly.Interop”&gt; &LT; HintPath&GT; .... libx86MyComAssembly.Interop.dll&LT; / HintPath&GT; &LT; /參考和GT; &lt;! - 任何其他x86特定參考 - &gt; &LT; /&的ItemGroup GT; &lt;! -  x64特定參考 - &gt; &lt; ItemGroup Condition =“'$(Platform)'=='x64'”&gt; &lt; Reference Include =“MyComAssembly.Interop”&gt; &LT; HintPath&GT; .... libx64MyComAssembly.Interop.dll&LT; / HintPath&GT; &LT; /參考和GT; &lt;! - 任何其他x64特定參考 - &gt; &LT; /&的ItemGroup GT;   

現在,當您將項目/解決方案構建配置設置為以x86或x64平台為目標時,它應該在每種情況下都包含正確的引用。當然,您需要使用&lt; Reference&gt; 元素。您甚至可以在添加x86和x64引用的位置設置虛擬項目,然後將必要的&lt; Reference&gt; 元素從這些虛擬項目文件複製到“真實”項目文件中。


編輯1
這是一個指向常見MSBuild項目項的鏈接,我不小心從原帖中遺漏了這些項: http://msdn.microsoft。

優秀答案!! 救了我的一天!非常感謝。 - hellodear 2016年12月7日8:32

+190

您可以對項目文件中的dll引用使用條件 ItemGroup
這將導致visual studio在您更改活動配置時重新檢查條件和引用。 >只需為每個配置添加條件。

示例:

 &lt; ItemGroup Condition =“'$(Configuration)| $(Platform)'=='Release | x86'“&gt; &lt; Reference Include =“DLLName”&gt; &LT; HintPath&GT; .. DLLName.dll&LT; / HintPath&GT; &LT; /參考和GT; &lt; ProjectReference Include =“.. MyOtherProject.vcxproj”&gt; &LT;項目&GT; {AAAAAA-000000-BBBB-CCCC-TTTTTTTTTT}&LT; /項目&GT; &LT;名稱&gt;&MyOtherProject LT; /名稱&gt; &LT; / ProjectReference&GT; &LT; /&的ItemGroup GT;  
     
			
        

非常感謝你!這肯定是公認的解決方案! - ManicBlowfish 2016年11月2日19:15

說真的,這個答案比接受的答案要好得多,也簡單得多。 - Yandros 2017年5月3日19:30

這樣做之後在References中有重複的條目是否正常? - natenho 18年10月18日16:57

+70

我在我的項目中引用位於例如componentv3_NET4中的x86 DLL。x86 / x64的特定DLL位於名為“x86”和“x64”的子文件夾中。

然後我使用預構建腳本,根據$(PlatformName)將適當的DLL(x86 / x64)複製到引用的文件夾中。

  xcopy / s / e / y“$(SolutionDir).. componentv3_NET4 $(PlatformName)*”“$(SolutionDir).. componentv3_NET4”  

適合我。

+20

我遇到了同樣的問題,花了很長時間尋找一個體面的解決方案。大多數人提供Visual Studio解決方案文件的手動編輯,這在以後在Visual Studio GUI中瀏覽這些編輯過的文件時非常繁瑣,容易出錯並且容易混淆。當我已經放棄時,解決方案就出現了。它與Micke在上面的回答中推薦的非常類似。

在客戶經理中,我像往常一樣為x86和x64平台創建了兩個獨立的構建目標。接下來,我向我的項目添加了對x86程序集的引用。在這一點上,我相信該項目僅針對x86構建進行配置,並且永遠不會為x64配置構建,除非我按照Hugo上面的建議手動編輯它。

過了一會兒,我最終忘了限制,不小心啟動了x64 build。當然,構建失敗了。但重要的是我收到的錯誤信息。錯誤消息告知,作為我的解決方案的x6??4構建目標的文件夾中缺少與我引用的x86程序集完全相同的程序集。

注意到這一點後,我手動將正確的x64程序集複製到此目錄中。榮耀!我的x64版本奇蹟般地成功找到並隱式鏈接了正確的程序集。修改我的解決方案以將x64程序集的構建目標目錄設置為此文件夾只需幾分鐘。在這些步驟之後,解決方案自動為x86和x64構建,無需手動編輯MSBuild文件。

總結:

  1. 在a中創建x86和x64目標單個項目
  2. 將所有正確的項目引用添加到x86程序集
  3. 為所有x64程序集設置一個公共構建目標目錄
  4. 如果您準備好了x64程序集,只需將它們複製一次到x64構建目標目錄中

    完成這些步驟後,您的解決方案將針對x86和x64配置正確構建。

    這在Visual Studio 2010 .NET 4.0上適用於我C#項目。顯然,這是Visual Studio的一種無證的內部行為,可能會在2012年,2013年和2015年版本中發生變化。如果有人試用其他版本,請分享您的經驗。 如果您已準備好x64程序集,只需將它們複製一次到x64構建目標目錄中

    完成這些步驟後,您的解決方案將為x86和x64配置正確構建。

    這適用於Visual Studio 2010 .NET 4.0 C#項目。顯然,這是Visual Studio的一種無證的內部行為,可能會在2012年,2013年和2015年版本中發生變化。如果有人試用其他版本,請分享您的經驗。 如果您已準備好x64程序集,只需將它們複製一次到x64構建目標目錄中

    完成這些步驟後,您的解決方案將為x86和x64配置正確構建。

    這適用於Visual Studio 2010 .NET 4.0 C#項目。顯然,這是Visual Studio的一種無證的內部行為,可能會在2012年,2013年和2015年版本中發生變化。如果有人試用其他版本,請分享您的經驗。 0 C#項目。顯然,這是Visual Studio的一種無證的內部行為,可能會在2012年,2013年和2015年版本中發生變化。如果有人試用其他版本,請分享您的經驗。 0 C#項目。顯然,這是Visual Studio的一種無證的內部行為,可能會在2012年,2013年和2015年版本中發生變化。如果有人試用其他版本,請分享您的經驗。

+10

一個帶有x86 / x64依賴關係的.Net構建

雖然所有其他答案都為您提供了根據平台製作不同構建的解決方案,但我只給您一個選項擁有“AnyCPU”配置並構建適用於x86和x64 dll的構建。

您必須為此編寫一些管道代碼。我無法使用app.config。如果其他人知道通過app.config解決問題的方法,我真的很想知道。

在運行時解析正確的x86 / x64-dll

步驟:

  1. 在csproj中使用AnyCPU
  2. 確定您是否僅引用csprojs中的x86或x64 dll。將UnitTests設置調整為您選擇的體系結構設置。在VisualStudio中調試/運行測試非常重要。
  3. 參考 - 屬性集複製本地&amp; 特定版本 false
  4. 通過將此行添加到您所有的第一個 PropertyGroup 中來刪除體系結構警告您引用x86 / x64的csproj文件:&lt; ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&gt;無&lt; / ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&gt;
  5. 將此postbuild腳本添加到您的啟動項目中,使用和修改此腳本sp的路徑,它將所有x86 / x64 dll複製到構建binx86 binx64的相應子文件夾中

    xcopy / E / H / R / Y / I / D $ (SolutionDir)YourPathToX86Dlls $(TargetDir)x86 xcopy / E / H / R / Y / I / D $(SolutionDir)YourPathToX64Dlls $(TargetDir)x64

    - &gt; 當您立即啟動應用程序時,會出現無法找到程序集的異常。

  6. 在應用程序入口點的開頭註冊AssemblyResolve事件

      AppDomain.CurrentDomain.AssemblyResolve + = TryResolveArchitectureDependency;   

    使用此方法:

      ///&lt; summary&gt; /// AppDomain.CurrentDomain的事件處理程序。AssemblyResolve ///&lt; / summary&gt; ///&lt; param name =“sender”&gt;應用域&lt; / param&gt; ///&lt; param name =“resolveEventArgs”&gt;解決事件args&lt; / param&gt; ///&lt; returns&gt;依賴於體系結構的程序集&lt; / returns&gt; public static Assembly TryResolveArchitectureDependency(object sender,ResolveEventArgs resolveEventArgs){var dllName = resolveEventArgs.Name.Substring(0,resolveEventArgs.Name.IndexOf(“,”)); var anyCpuAssemblyPath = $“。 {dllName} .dll”; var architectureName = System.Environment.Is64BitProcess?“x64”:“x86”; var assemblyPath = $“。 {architectureName}  {dllName} .dll”; if(File.Exists(assemblyPath)){return Assembly.LoadFrom(assemblyPath); } return null;    
  7. 如果您有單元測試,請使用具有AssemblyInitializeAttribute的Method創建一個TestClass,並在那裡註冊上面的TryResolveArchitectureDependency-Handler。(如果在visual studio中運行單個測試,有時不執行此操作,引用將不會從UnitTest bin中解析。因此,步驟2中的決定很重要。)

    好處:

    • 兩個平台的一個安裝/構建

      缺點: - 當x86 / x64 dll不匹配時,編譯時沒有錯誤。 - 您仍然應該在兩種模式下運行測試!

      (可選)在postbuild腳本中使用Corflags.exe創建第二個可執行x64體系結構的可執行文件

0
votes
answers
13 views
+10

如何創建一個新線程

-3

我是編程新手,所以這聽起來可能聽起來不太好,但在我做了一些研究之後,我明白了我可以創建一個新線程,以便多個代碼塊可以並行運行。有人能解釋我如何創建一個新的線程。我在Windows上使用Visual Studio。如何創建一個新線程

+0

你用'C'編碼而不是'C++'嗎?你使用的是哪個版本的Visual Studio? – druckermanly 2014-12-05 07:16:55

+0

'pthread_create' ?? – 2014-12-05 07:17:28

+0

我正在使用Visual Studio 2012,並且正在使用C編碼。 – Alec 2014-12-05 07:21:50

沙发
0
3

使用在pthread_create函數我們可以創建線程。

#include<stdio.h> 
    #include<stdlib.h> 
    #include<pthread.h> 

pthread_t tid; pthread_t tid1; void * thrd(void * a) { printf(「thread created n」);

printf("%u
",(unsigned int)tid); 
    } 
    void *thrd1(void *a) 
{ 
    printf("second thread created
"); 
    printf("%u
",(unsigned int)tid1); 
    } 

    main() 
    { 

    int a=pthread_create(&tid,NULL,thrd,NULL); 
    int b=pthread_create(&tid1,NULL,thrd1,NULL); 
    sleep(1); 

    }      
板凳
0
1

試試看代碼

 #include<stdio.h> 
     #include<pthread.h> 

     void *hello(void *arg) 
     { 
     printf("thread id=%u
",(unsigned)pthread_self()); 
     printf("hello welocme Thread created 
"); 
     } 

     main() 
    { 
     pthread_t tid; 

     tid=pthread_create(&tid,NULL,hello,NULL); 


    } 

編譯:

CC FILENAME.C -pthread

0
votes
answers
16 views
+10

請參閱mvc視圖中的intellisense建議

0

我在visual studio 2017上使用了MVC5。 我已經制作了一個空控制器並寫了我的代碼,此後我已經將模型對象傳遞給了我的視圖。 現在我試圖代碼我的觀點的一面,但我有這些問題: (我看過類似的問題,不能修復這些)請參閱mvc視圖中的intellisense建議

1 - 雖然我已經在我看來,下面寫代碼作爲第一行,但我無法使用智能感知的建議對我的模型類。(我發現它的類似的問題之一)

@model IEnumerable<MyProject.Models.Myclass> 

2 - 我正在使用C#常見的關鍵字,如「的foreach」,但是當我寫我們說「脫穎而出」在看來,它並沒有暗示我任何東西。而在控制器中,它建議所有這些。

+0

請發佈您已撰寫的視圖以及您期待看到智能感知建議的地方。 –

+0

它是一個非常空的模型,只有上面的線在它上面。現在我正在嘗試開始編碼我的視圖bu我看不到來自intellisense的任何建議。 – yekanchi

沙发
0
0

在剃刀意見,每當你想使用C#常見的關鍵字,你必須用@符號前綴它

因此,使用你有什麼聲明模型後,就可以循環通過收集和例如創建一個表

@model IEnumerable<MyProject.Models.Myclass> 

@foreach (var item in Model) 
{ 
    <tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Field1) 
    </td> 
     <td> 
     @Html.DisplayFor(modelItem => item.Field2) 
    </td> 


    </tr> 
} 
+0

我知道這一點,我使用它,我的意思是intellisense不能在@符號後提示foreach。 – yekanchi